Ruby重新打开类 - 可以访问重写的方法吗?

Kva*_*ass 5 ruby ruby-on-rails-3

我知道如果我继承String类并覆盖其大写方法,我可以调用String类的大写版本super.如果相反我重新打开String类并重写了capitalize方法呢?有没有办法可以调用该方法的先前版本?

Jac*_*son 5

没有开箱即用.常见的方法是将现有方法重命名为新名称.然后,在您的重写版本中,使用新名称调用旧方法.

def String
    alias to_i old_to_i
    def to_i
       #add your own functionality here
       old_to_i
    end
end
Run Code Online (Sandbox Code Playgroud)

您可能还想看一下alias_method_chain,这会为您做一些.