Ruby中一元加运算符有什么意义?

时间:2011-04-15 17:58:23

标签: ruby language-design unary-operator

除了使用一元减号进行良好的对称外,为什么在Numeric类上定义了一元加运算符?它是否具有一些实用价值,除了引起混淆,允许写++i之类的东西(与大多数非Rubyists认为不会增加i)。

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

3 个答案:

答案 0 :(得分:9)

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

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

  

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

mentioned in the docs一样,如果冻结了字符串,则一元加号运算符将返回可变的字符串。