Как реализовать 1 + 1 = 3 в Ruby Я чувствую, что следующее решение class Fixnum def +(x) self + x + 1 end end не должен работать, так как + будет называться рекурсивно. Ответ 1 Используя alias для сохранения оригинала +, как это работает: class Fixnum alias old_plus + def +(x) old_plus(x).succ end end Ответ 2 Другим способом является prepend модуль: module PlusOne def +(x) super.succ end end Fixnum.prepend(PlusOne) 1 + 1 #=> 3
Ответ 1 Используя alias для сохранения оригинала +, как это работает: class Fixnum alias old_plus + def +(x) old_plus(x).succ end end
Ответ 2 Другим способом является prepend модуль: module PlusOne def +(x) super.succ end end Fixnum.prepend(PlusOne) 1 + 1 #=> 3