Ruby:Boolean

From Blognone

Jump to: navigation, search

ภาษาruby มีการใช้ boolean เหมือนภาษาอื่นๆ

1 == 1           # true
1 == 2           # false
'russ' == 'smart' # false
(1 < 2)           #true
(4 > 6)           # false
 
a = 1
b = 10000
(a > b)           # false
 
(4 >=4)         # true
(1 <=2)         # true

true กับ false ก็เหมือนกับ nil ไม่ได้เป็น primitive แต่เป็น instance ของ TrueClass และ flase ก็เป็น instance ของ FalseClass

and และ or ในภาษา Ruby สามารถใช้สัญลักษ์แทนได้

(1 == 1) and (2 == 2)  #true
(1 == 1) and (2 == 3)  #false

เราสามารถใช้ && แทนได้

(1 == 1) && (2 == 2)  #true
(1 == 1) && (2 == 3)  #false

ส่วนคำสั่ง or เราสามารถใช้ || แทนได้

(1 == 1) or (2 == 2)  #true
(1 == 2) || (2 == 3)  #false

สำหรับ "not" เราจะใช้ ! แทน

not (1 ==2)  #true
! (1 == 1)     # false
not false       #true

ทุกตัวแปล (Object) สามารถตีความเป็นเป็น boolean ได้ โดยจำง่ายๆ ว่า false และ nil ถือว่าเป็นเท็จ นอกนั้นเป็นจริงหมด

true and 'fred' #true

เพราะว่า 'fred' ไม่ใช่ nil จึงถือว่าเป็นจริง

'fred' && 44 # true

เพราะ 'fred' และ 44 ไม่ใช่ nil จึงเป็นจริงทั้งคู่

nil || false  #false

เพราะ false และ nil เป็นเท็จทั้งคู่

ที่น่าจะจำนอกจากนั้นก็มี

if 0
  puts('zero is true!')
end

ไม่เหมือน c หรือ c++คำสั่งข้างต้นจะพิมพ์คำว่า 'zero is true!' เพราะใน Ruby ค่า "0" เป็นจริง

if ""
  puts('empty string is true!')
end

คำสั่งข้างต้นพิมพ์คำว่า 'empty string is true!' เพราะ empty string ไม่ใช่ nil ถ้าต้องการตรวจสอบว่า string empty หรือเปล่าให้ใช้

s = ""
if s.empty?
  puts('s is empty!')
end