【问题标题】:What's the point of unary plus operator in Ruby?Ruby 中的一元加号运算符有什么意义?
【发布时间】:2011-04-15 17:58:23
【问题描述】:

除了用一元减号做一个很好的对称之外,为什么在Numeric 类上定义一元加号运算符?它是否有一些实用价值,除了会引起混乱,允许编写像 ++i 这样的东西(与大多数非 Ruby 主义者认为的不同,它不会增加 i)。

我可以想到在自定义类上定义一元加号可能很有用的场景(例如,如果您正在创建一些性感的 DSL),所以能够定义它是可以的,但为什么它已经在 Ruby 数字上定义了?

【问题讨论】:

    标签: ruby language-design unary-operator


    【解决方案1】:

    也许这只是与其他编程语言的一致性问题,并反映一元减号。

    The Ruby Programming Language(由设计 Ruby 的 Yukihiro Matsumoto 编写)中找到了对此的支持:

    一元加号是允许的,但它对数字操作数没有影响——它只是返回其操作数的值。它是为了与一元减号对称而提供的,当然可以重新定义。

    【讨论】:

      【解决方案2】:

      作为mentioned in the docs,如果一个字符串被冻结,一元加号运算符将返回一个可变字符串。

      【讨论】:

      • 谢谢,很高兴知道。不过,问题是关于 Numeric 类的。
      • 来到这里寻找与String 相关的一元加号,尽管问题是关于Numeric
      【解决方案3】:

      我看到的一个可能原因是明确声明一个数字是正数(即使默认情况下它是正数)。

      ruby-1.9.2-p136 :051 > +3
       => 3 
      ruby-1.9.2-p136 :052 > 3
       => 3 
      

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 2021-07-12
        • 2013-05-14
        • 2010-10-14
        • 2011-09-14
        • 1970-01-01
        相关资源
        最近更新 更多