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

Mla*_*vić 9 ruby language-design unary-operator

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

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

Mat*_*all 9

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

Ruby编程语言中找到了对此的支持(由设计Ruby的Yukihiro Matsumoto编写):

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


Dir*_*tyF 5

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

  • 来到这里寻找与“String”相关的一元加号,即使问题是关于“Numeric”。 (2认同)