如何在Ruby中向现有方法定义添加语句

mko*_*mko 5 ruby metaprogramming

我注意到了类定义,如果我打开它class MyClass,并在两者之间添加一些东西而不覆盖我仍然得到了之前定义的原始方法.新增的声明增加了现有声明.

但是对于方法定义,我仍然希望与类定义具有相同的行为,但是当我打开def my_method,def并且end被覆盖的现有语句时,我需要再次重写它.

那么是否有任何方法可以使方法定义与定义相同,例如super,但不一定是子类?

emb*_*oss 9

我想你正在寻找alias_method:

class A
  alias_method :old_func, :func

  def func
    old_func # similar to calling 'super'
    # do other stuff
  end
end
Run Code Online (Sandbox Code Playgroud)