Ruby 模块如何覆盖包含它的类的父类中的方法?
我正在尝试编写一个模块,覆盖它所包含的类中的实例方法 这不起作用:Ruby 模块如何覆盖包含它的类的父类中的方法?,ruby,Ruby,我正在尝试编写一个模块,覆盖它所包含的类中的实例方法 这不起作用: require 'active_support' class Foo def bar "bar" end end module NewFoo extend ActiveSupport::Concern included do alias __bar__ bar end def bar "new " + __bar__ end end class Baz < Fo
require 'active_support'
class Foo
def bar
"bar"
end
end
module NewFoo
extend ActiveSupport::Concern
included do
alias __bar__ bar
end
def bar
"new " + __bar__
end
end
class Baz < Foo
include NewFoo
end
需要“主动支持”
福班
def棒
“酒吧”
结束
结束
纽福模块
扩展ActiveSupport::关注点
包括做
别名_; bar _; bar
结束
def棒
“新”+\u条__
结束
结束
类Baz
我的期望是Baz.new.bar.eql应该是“new bar”
,但我得到的是未定义的局部变量或方法“\uuuuu bar”
错误
我已经尝试了上述的各种变体,包括通过def self.include(base)…
的旧方法,但都没有效果
有什么建议吗?有一项伟大的新发明叫做继承: 或者更习惯地说
"new #{super}"
有一个伟大的新发明叫做继承: 或者更习惯地说
"new #{super}"
Doh。我们盯着屏幕看的时间太长了。哈卡内萨里:我知道这种感觉。有一次,我花了整整一个上午的时间研究一些复杂的循环逻辑,试图找出最优雅的方法来执行
注入
,它对每个元素都执行相同的操作,但最后一个除外。然后,一位朋友瞥见了一眼代码,说:“你知道那只是数组#join
,对吧?”Doh。我们盯着屏幕看的时间太长了。哈卡内萨里:我知道这种感觉。有一次,我花了整整一个上午的时间研究一些复杂的循环逻辑,试图找出最优雅的方法来执行注入
,它对每个元素都执行相同的操作,但最后一个除外。然后,一位朋友瞥见了一眼代码,说:“你知道那只是数组#join
,对吧?”