0
例えば、我々は持っている:ここではメソッドがオーバーライドされないのはなぜですか?
module X
def test
"X"
end
end
module Y
def test
"Y"
end
end
class L
include X
end
L.new.test #=> "X"
class L
include Y
end
L.new.test #=> "Y"
class L
include X
end
L.new.test #=> "Y"
は奇妙なことです。最後のインクルードがメソッドをXのメソッドに変更しなかったのはなぜですか?
しかし、モジュールがクラスに含まれるたびに 'included'モジュールのコールバックを呼び出すのはなぜですか? – megas
'Module#include'ソースを見てください。最初に 'append_features'を呼び出し、モジュールが実際にそれに含まれているかどうかにかかわらず、' included'フックを呼び出します。 –