Ответ 1
Используя alias
для сохранения оригинала +
, как это работает:
class Fixnum
alias old_plus +
def +(x)
old_plus(x).succ
end
end
Я чувствую, что следующее решение
class Fixnum
def +(x)
self + x + 1
end
end
не должен работать, так как +
будет называться рекурсивно.
Используя 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