小编H.E*_*yed的帖子

alias_method和alias_method_chain有什么区别?

我正在处理我的Web应用程序,我想覆盖一个方法,例如,如果原始类是

class A
  def foo
    'original'
  end
end
Run Code Online (Sandbox Code Playgroud)

我想覆盖foo方法,它可以这样做

class A
  alias_method :old_foo, :foo
  def foo
    old_foo + ' and another foo'
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以像这样调用新旧方法

obj = A.new
obj.foo  #=> 'original and another foo'
obj.old_foo #=> 'original'
Run Code Online (Sandbox Code Playgroud)

那么如果我可以像我一样访问并保留两种方法,那么alias_method_chain的用途是什么?

ruby ruby-on-rails alias-method-chain alias-method ruby-on-rails-3

7
推荐指数
1
解决办法
497
查看次数