Ruby && 與 And 的區別
Stewart Nguyen
2022年5月18日
對於布林表示式或流控制,&&
和 and
都可以使用。
它們之間的區別在於優先順序。運算子 and
的優先順序低於 =
,而&&
的優先順序高於運算子 =
。
考慮這兩個布林表示式。
puts var_1 = true && false
puts var_2 = true and false
輸出:
false
true
兩個表示式都返回 false
,但 var_1
和 var_2
將分配給它們不同的值。
var_1 = true && false
等價於 var_1 = (true && false)
,var_1
等價於 false
。
相反,var_2 = true and false
將被評估為 (var_2 = true) and false
。這意味著 var_2
最終將包含值 true
。
puts var_1
puts var_2
輸出:
false
true
因此,切勿將 and
與這樣的三元運算子一起使用。
s = true and 2.even? ? 'even' : 'odd'
puts s
輸出:
true
我們可能期望它列印 even
,但相反,它返回 true
。