nil || false
nil || false
返回false
和false || nil
false || nil
返回nil
。 有没有人有这样的解释?
Answer 1:
在Ruby中,一切都是表达式,以及表达式,将返回在它最后计算的值。
对于这你的例子,的左侧||
表达式计算为一个falsy值,因此Ruby然后评估右侧,并将其返回。
Answer 2:
正如有人指出, ||
首先评估左侧的表达。 如果是“真”(除任何false
或nil
),它返回。 否则,计算右侧的表达式,并返回它(不管它是什么)。
这使得||
的不仅仅是布尔测试多了不少有用的。 举例来说,我只是写了一些代码时使用它的一天chronic
宝石:
@now = options[:now] || Chronic.time_class.now
这意味着:“如果options
哈希包括:now
值,存储在@now
。否则,依傍Chronic.time_class.now
作为默认”。 我相信你能想到很多在自己的程序可以应用的。
&&
是类似的:它首先计算在左边的表达,并且如果它的计算结果为false
或nil
,它返回。 否则,计算右侧的表达式,并返回它(不管它是什么)。
这意味着&&
也是不仅仅是布尔测试多了不少有用的。 你可以用它来的两行代码挤入之一。 例如:
do_something && do_something_else
(这只有当你知道的返回值工作do_something
永远不会false
或nil
!)
您还可以使用&&
挤在同一行,因为它是“守着”什么是“后卫”的表达:
message && send_message(message)
可以代替:
unless message.nil?
send_message(message)
end
Answer 3:
||
返回最后计算的表达式的结果。 如果评估LHS并找到true
价值,你得到的LHS; 否则,你得到的RHS(不管是什么RHS可能)。
文章来源: nil || false and false || nil in ruby