How can I redefine Fixnum's + (plus) method in Ruby and keep original + functionality?
问题 This throws me a SystemStackError in 1.9.2 Ruby ( but works in Rubinius ): class Fixnum def +(other) self + other * 2 end end but there is no super for + (based on other errors). How can I access the original + functionality? 回答1: Use alias_method . Alias Fixnum 's + to something else, then refer to it in the new + : class Fixnum alias_method :old_add, :+ def +(other) self.old_add(other) * 2 end end 回答2: Another interesting approach would be to pass a block to Fixnum's module_eval method. So,