为什么0&& 1是1而1&&红宝石中0为0?

时间:2012-03-11 10:03:42

标签: ruby operators

在Ruby中,为什么以下行是真的?

0 && 1 == 1
1 && 0 == 0

为什么它们不同而且不是0?

3 个答案:

答案 0 :(得分:37)

Boolean AND运算符&&返回第二个操作数,如果first不是false。 Ruby中的布尔表达式中01true。布尔表达式中只有nilfalse为false。

nil && 15 # => nil
15 && 17 # => 17
15 && nil # => nil

答案 1 :(得分:7)

01不代表Ruby中的真值。在ruby中,任何不是nilfalse的东西都是真的。如果你加上这个:

  

&和&&运营商评估他们的第一个操作数如果为false,则表达式返回false;否则,表达式返回第二个操作数的值。

您得到的是评估true && true,然后返回第二个操作数的结果。如果你写了3 && 4,你就会得到4

答案 2 :(得分:3)

除了这里的优秀答案:

您可能会混淆逻辑按位 AND。

$ irb
1.9.3-p125 :001 > 1 & 0
 => 0 
1.9.3-p125 :002 > 0 & 1
 => 0