Ruby中一元正号运算符有什么作用?

10
除了与一元负号形成良好的对称性外,为什么在Numeric类上定义一元正号运算符?除了造成混淆并允许编写像++i这样的代码(与大多数非Ruby程序员认为的不同,它不会使i递增),它还有其他实际价值吗?
我可以想象在自定义类上定义一元正号可能有用的场景(比如创建一些性感的DSL),因此能够定义它是可以接受的,但为什么它已经在Ruby数字上定义了呢?
3个回答

9
也许这只是与其他编程语言的一致性有关,并且为了反映一元减号。
Ruby编程语言(由设计Ruby的松本行弘撰写)中找到了支持:
“一元加号是允许的,但对数字操作数没有影响-它仅返回其操作数的值。它提供了与一元减号的对称性,并且当然可以重新定义。”

6
文档中所述,如果字符串被冻结,则一元加运算符将返回一个可变的字符串。

1
谢谢,知道了。不过问题是关于“Numeric”类的。 - Mladen Jablanović
2
来这里是为了查找与String相关的一元加号,尽管问题是关于Numeric的。 - Eric Walker

1

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接