簡體   English   中英

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM