【问题标题】:Why 0 && 1 is 1 while 1 && 0 is 0 in ruby?为什么 0 && 1 是 1 而 1 && 0 在红宝石中是 0?
【发布时间】:2012-03-28 01:58:20
【问题描述】:

在 Ruby 中,为什么以下几行是正确的?

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

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

【问题讨论】:

    标签: ruby operators


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      01 在 Ruby 中不代表真值。在红宝石中,任何不是nilfalse 的东西都是真的。如果你添加到这个:

      and 和 && 运算符计算它们的第一个操作数。如果为假,则表达式返回假;否则,表达式返回第二个操作数的值。

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

      【讨论】:

        【解决方案3】:

        除了这里的优秀答案:

        您可能会混淆 logicalbitwise AND。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-13
          • 2017-11-28
          • 2022-12-16
          • 2019-12-23
          • 2012-12-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多