2011-04-15 30 views
8

除了用一元减去一个很好的对称性之外,为什么在一类Numeric类上定义了一元加运算符?是否有一些实用价值,除了造成混淆,允许编写像++i(与大多数非Rubyists认为不会增加i)类似的东西。Ruby中的一元加运算符有什么意义?

我可以想到在自定义类中定义一元加号可能很有用的情况(比如说,如果你创建了一些性感的DSL),所以能够定义它是可以的,但为什么它已经定义了Ruby数字?

回答

7

也许这只是一个问题,与其他编程语言一致,并且镜像一元减号。

The Ruby Programming Language(由松本行弘,谁设计的Ruby写的)这个

找到支持:

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

1

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

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