Ruby && 與 And 的區別

Stewart Nguyen 2022年5月18日
Ruby && 與 And 的區別

對於布林表示式或流控制,&&and 都可以使用。

它們之間的區別在於優先順序。運算子 and 的優先順序低於 =,而&&的優先順序高於運算子 =

考慮這兩個布林表示式。

puts var_1 = true && false
puts var_2 = true and false

輸出:

false
true

兩個表示式都返回 false,但 var_1var_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

相關文章 - Ruby Boolean