[英]How to call super on dynamicly defined methods in sub-classes in Ruby?
[英]How to call super methods defined in a serial of modules in ruby
有沒有可能讓c1.say顯示“lalala”而不改變M1,M2,C1? 即,使用額外的模塊來覆蓋M2的方法? 謝謝,
module M1
def word
"lalala"
end
end
module M2
def word
super + 'wawawa'
end
end
class C1
include M1
include M2
def say
puts word
end
end
c1 = C1.new
c1.say # lalalawawawa
您可以隨時修改任何類,而無需更改其原始代碼。
module M1
def word
"lalala"
end
end
module M2
def word
super + 'wawawa'
end
end
class C1
include M1
include M2
def say
puts word
end
end
# patch M2
M2.class_eval do
def word
super
end
end
# or patch C1
# C1.class_eval do
# def word
# 'lalala'
# end
# end
c1 = C1.new
c1.say
# >> lalala
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.