0
オブジェクトが最初から実行されたとしても、後続のコードブロックを無視する方法がわかりにくいです。それが探しているオブジェクトのメソッドルックアップパス(モジュールとメソッドのオーバーライド)
方法は、各モジュール上にある
class A
include B,C,D,B
end
ルビが側モジュール名の配列を保持しない(それは明らかD
を呼び出すように)?
Rubyは実際にクラスに含まれているモジュールを記憶し、メソッドのルックアップ・パスにこれらのモジュールをマージ...
A.included_modules?私にはうまくいきました。ルビーはモジュール名の配列を保持しています。ここで最初に行うことは、この配列のすべての要素を調べて何か問題があるかどうかを確認することです。ありがとう! –
「何かが間違っている」とはどういう意味ですか? Rubyは明確なメソッド解決順序を持っています。その名前を言い表すときに呼び出す実際の関数を見つけるために使用するアルゴリズムを意味します。そして私が言ったように、順序はクラス - >含まれるモジュール(順番に試された) - >親クラスです。これらのメソッドの1つに、定義された名前のメソッドが含まれている場合は、そのメソッドが使用され、検索がアボートされます。 –
確かに、何かが間違っているかもしれないと言って、私は何かが間違っているということを言及していません、私はちょうどそれが何らかのメッセージに応答すればモジュールを尋ねる瞬間になると、あなた自身がinclude_modulesに尋ねて、以前に言ったようにsometingを実行します。 '含まれているモジュールは再導入されません。'これで、メソッドルックアップのパスについて他の部分は分かりましたが、 。それはちょうど私はこれらのすべてのモジュールを宣言しました –