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