module M def foo super puts "M#foo" end end class C2 def foo puts "C2#foo" end end class C < C2 def foo super puts "C#foo" end prepend M end C.new.foo
上記のコードですが
prepend M により継承順は「M,C,C2」だと思います。
なので最初に「"M#foo"」が出力されると思ったのですが
出力結果は以下のようになりました。
C#foo
C2#foo
M#foo
なぜ継承で一番優先順位の高いMが一番最後に出力されているのかが謎です。
お手数ですが、解説をよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/13 05:42