【问题标题】:How to call original method after it got prepend from outside从外部预先添加后如何调用原始方法
【发布时间】:2017-03-22 17:21:14
【问题描述】:

我正在重构一些旧代码以适应 Ruby > 2。我想删除一些 alias_method_chain

但是有一些地方调用了 without 方法。在方法内部我必须super 肯定,但从外部?

给出以下内容:

module ExtraLog
  def log
    puts "ExtraLog"
    super
  end
end

class Klass
  prepend ExtraLog
  def log
    puts "Log"
  end
end

a = Klass.new
a.log 
#=> "ExtraLog"
#=> "Log"

如果不调用前置方法,我现在如何调用原始日志方法? a.original_log 之类的东西?

【问题讨论】:

  • 你解决了吗?
  • 好的,非常感谢!现在无法投票

标签: ruby class prepend


【解决方案1】:

Method#super_method:

a.method(:log).super_method.call
#=> Log

【讨论】:

  • 很奇怪,您不能在方法中直接调用 #super 而必须使用它。这个解决方案也对我有用。
猜你喜欢
  • 2023-03-15
  • 2021-04-30
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
相关资源
最近更新 更多