【发布时间】:2012-03-28 01:58:20
【问题描述】:
在 Ruby 中,为什么以下几行是正确的?
0 && 1 == 1
1 && 0 == 0
为什么它们不同而不都是 0?
【问题讨论】:
在 Ruby 中,为什么以下几行是正确的?
0 && 1 == 1
1 && 0 == 0
为什么它们不同而不都是 0?
【问题讨论】:
Boolean AND 运算符 && 如果 first 不为 false,则返回其第二个操作数。 0 和 1 在 Ruby 的布尔表达式中是 true。只有 nil 和 false 在布尔表达式中为 false。
nil && 15 # => nil
15 && 17 # => 17
15 && nil # => nil
【讨论】:
0 和 1 在 Ruby 中不代表真值。在红宝石中,任何不是nil 或false 的东西都是真的。如果你添加到这个:
and 和 && 运算符计算它们的第一个操作数。如果为假,则表达式返回假;否则,表达式返回第二个操作数的值。
你得到你评估true && true,然后返回第二个操作数的结果。如果你写了3 && 4,你就会得到4!
【讨论】:
除了这里的优秀答案:
您可能会混淆 logical 和 bitwise AND。
$ irb
1.9.3-p125 :001 > 1 & 0
=> 0
1.9.3-p125 :002 > 0 & 1
=> 0
【讨论】: