虚假&&零和零&&红宝石中的假

时间:2017-01-20 06:47:37

标签: ruby

为什么nil && false会在nil返回false && nil时返回false

我在nil || false and false || nil in ruby中阅读了最常见的答案。在我看来,nilfalse都评估为假值,但为什么这两个表达式会返回不同的值?

2 个答案:

答案 0 :(得分:9)

规则很简单:&&如果是假的,则返回第一个参数。否则,它会评估并返回其第二个参数。

所以在

nil && false

false && nil

在这两种情况下,第一个参数都是假的。 (nilfalse是评估falsy的唯一两个值,因此表达式的结果是第一个参数。

第二个论点也恰好是假的事实并不重要。事实上,由于短路,第二个论点没有被评估。

答案 1 :(得分:-1)

这是关于运营订单。 Nil没有布尔值。 在&&语句,当至少在参数为false时返回false。

所以在表达式中: scripts[] = 'js/my_new_script.js'它发现第一个参数是假的,检查第二个参数是没有意义的,所以它返回false。 在第二种情况下 - false && nil它遇到nil,因此无法与boolean进行比较的值,因此无法计算表达式,因此它返回'nil',就像在ruby中的每个其他类似情况一样。

在'||'声明它在第一个或第二个参数为假的情况下给出错误。

第一种情况:nil && false - 它检查第一个参数是否为假,然后验证第二个实际上什么都没有,以便它给出第一个值。

第二种情况false || nil它首先检查是什么,然后第二种是布尔值,所以它返回false。