为什么nil && false
会在nil
返回false && nil
时返回false
?
我在nil || false and false || nil in ruby中阅读了最常见的答案。在我看来,nil
和false
都评估为假值,但为什么这两个表达式会返回不同的值?
答案 0 :(得分:9)
规则很简单:&&
如果是假的,则返回第一个参数。否则,它会评估并返回其第二个参数。
所以在
nil && false
和
false && nil
在这两种情况下,第一个参数都是假的。 (nil
和false
是评估falsy的唯一两个值,因此表达式的结果是第一个参数。
第二个论点也恰好是假的事实并不重要。事实上,由于短路,第二个论点没有被评估。
答案 1 :(得分:-1)
这是关于运营订单。 Nil没有布尔值。 在&&语句,当至少在参数为false时返回false。
所以在表达式中:
scripts[] = 'js/my_new_script.js'
它发现第一个参数是假的,检查第二个参数是没有意义的,所以它返回false。
在第二种情况下 - false && nil
它遇到nil,因此无法与boolean进行比较的值,因此无法计算表达式,因此它返回'nil',就像在ruby中的每个其他类似情况一样。
在'||'声明它在第一个或第二个参数为假的情况下给出错误。
第一种情况:nil && false
- 它检查第一个参数是否为假,然后验证第二个实际上什么都没有,以便它给出第一个值。
第二种情况false || nil
它首先检查是什么,然后第二种是布尔值,所以它返回false。