我感觉下面的解决方案
class Fixnum
def +(x)
self + x + 1
end
end
Run Code Online (Sandbox Code Playgroud)
不应该工作,因为+将递归调用.
Yu *_*Hao 28
使用alias存储原始+像这样的工作:
class Fixnum
alias old_plus +
def +(x)
old_plus(x).succ
end
end
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 26
另一种方式是prepend模块:
module PlusOne
def +(x)
super.succ
end
end
Fixnum.prepend(PlusOne)
1 + 1 #=> 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3410 次 |
| 最近记录: |