假设我有类似的东西
true && true #=> true
这是有道理的,所以我尝试类似:
true && "dsfdsf" #=> "dsfdsf"
这让我感到惊讶,因为我经常会做类似的事情if something && something
,我一直认为那是评估为真并且会返回真。进一步的实验做这样的事情:
jruby-1.7.3 :009 > "ad" && "dsf"
=> "dsf"
jruby-1.7.3 :010 > "ad" && "sdfd" && nil
=> nil
jruby-1.7.3 :011 > "ad" && nil && "sdf"
=> nil
看起来 Ruby 要么返回最后一个值,要么返回它找到的第一个假值。为什么这样做?这是一个正确的心理模型吗?