什么';Ruby中一元加号运算符的意义是什么?

什么';Ruby中一元加号运算符的意义是什么?,ruby,language-design,unary-operator,Ruby,Language Design,Unary Operator,除了与一元负号保持良好的对称性外,为什么在Numeric类上定义了一元加号运算符?它是否有一些实用价值,除了造成混乱,允许编写像++i(不像大多数非Ruby主义者所认为的那样,它不会增加i) 我可以想象这样一种场景,在自定义类上定义一元加号可能很有用(比如说,如果您正在创建一些性感的DSL),所以能够定义它是可以的,但为什么它已经在Ruby数字上定义了呢?我看到的一个可能的原因是明确地声明一个数字是正的(即使默认情况下它是正的) 也许这只是一个一致性的问题,无论是与其他编程语言,还是反映一元负数

除了与一元负号保持良好的对称性外,为什么在
Numeric
类上定义了一元加号运算符?它是否有一些实用价值,除了造成混乱,允许编写像
++i
(不像大多数非Ruby主义者所认为的那样,它不会增加
i


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

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


也许这只是一个一致性的问题,无论是与其他编程语言,还是反映一元负数

在中找到了对此的支持(由Ruby的设计者松本幸弘撰写):

允许使用一元加号,但它对数值操作数没有影响—它只返回其操作数的值。它是用一元负数来表示对称的,当然,它可以被重新定义


同样,如果字符串被冻结,一元加号运算符将返回可变字符串。

谢谢,很高兴知道。问题是关于
Numeric
类的。尽管问题是关于
Numeric
的,但我还是来这里寻找与
String
相关的一元加号。
ruby-1.9.2-p136 :051 > +3
 => 3 
ruby-1.9.2-p136 :052 > 3
 => 3