为什么
我读了在ruby中的nil || false和false || nil的顶层答案。看起来,
nil && false
返回 nil
而 false && nil
返回 false
?我读了在ruby中的nil || false和false || nil的顶层答案。看起来,
nil
和false
都被视为falsy值,但是这两个表达式为什么返回不同的值?
false && 1.0/0 #=> false; nil && { 1=>2 }.quick_brown_fox #=> nil
(其中没有定义quick_brown_fox
方法)。如果第一个值为“假”值(逻辑上的 false),例如false
或nil
,Ruby 返回它;并且 不会 计算&&
后面的表达式。这一点尤其重要,因为通常你会写一个表达式,在&&
左边的部分是“真”值(逻辑上的 true,“truthy”)时,&&
右边的部分是一个有效的 Ruby 语句。例如:obj.is_a?(Hash) && obj[:cat]
,其中obj
可能是一个数组、整数或哈希表。 - Cary Swoveland