Rubyモジュール_prepend - Silver/Gold試験対策
prepend と includeの違い
# prependで読み込まれたモジュールメソッドのほうが先に呼び出される module IncludeModule def embeded_method :from_include_module end end module PrependModule def embeded_method :from_prepend_module end end class PrependedClass prepend PrependModule include IncludeModule end embeded_obj = PrependedClass.new p embeded_obj.embeded_method #=> :from_prepend_module
includeと同じく、二つ目のprependが呼び出される
module FirstPrepend def hoge :from_first end end module SecondPrepend def hoge :from_second end end class Hoge prepend FirstPrepend prepend SecondPrepend end p Hoge.new.hoge #=> :from_second
prependはモジュールとクラスに同名のメソッドがあった場合、 モジュール側のメソッドが優先して呼ばれる
module M def hello :from_m end end class C1 include M def hello :from_c1 end end class C2 prepend M def hello :from_c2 end end p C1.new.hello #=> from_c1 p C2.new.hello #=> from_m