如何在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