如何在Ruby中实现1 + 1 = 3

我感觉到下面的解决scheme

class Fixnum def +(x) self + x + 1 end end 

不应该工作,因为+将被recursion调用。

使用alias来存储原始的+像这样工作:

 class Fixnum alias old_plus + def +(x) old_plus(x).succ end end 

另一种方法是prepend一个模块:

 module PlusOne def +(x) super.succ end end Fixnum.prepend(PlusOne) 1 + 1 #=> 3