【发布时间】:2014-03-31 21:23:24
【问题描述】:
在 Fixnum 类的 Ruby 中重新定义一元 + 运算符时出现了一些奇怪的结果。不完全确定为什么事情会以现在的方式发生(特别是009 行)。
irb:003> class Fixnum
irb:004> def +@ #define unary +
irb:005> 15
irb:006> end
irb:007> end
=> nil
irb:008> 2
=> 2
irb:009> +2
=> 2
irb:010> +(2)
=> 15
irb:011> ++2
=> 15
【问题讨论】:
-
在
+(2)中,2是方法+的参数;与+ 2相同。没有方法++,所以++2被解释为+(+2),或者+(2)。 -
那么你得到的是
+ 2调用了+@方法,而+2只是被解析器/解释器视为文字2?
标签: ruby operators operator-overloading