Ruby && 与 And 的区别
对于布尔表达式或流控制,&&
和 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
。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。