私の理解では、モジュールがクラスに含まれると、モジュールのコピーが作成され、包含クラスとそのスーパークラスの間に置かれます。 私はRuby Under a MicroscopeによってPat Shaughnessyによって引用します。あなたは以下のことをしているとします含まれているモジュールへの参照を取得する
module Professor
end
class Mathematician < Person
include Professor
end
を我々は上記のコードを実行すると、Rubyは
Professor
モジュールのRClass
構造体のコピーを作成し、Mathematician
のための新たなスーパークラスとしてそれを使用しています。 RubyのCソースコードは、を含むとしてこのモジュールのコピーを参照しています。Professor
の新しいコピーのスーパークラスは、元のスーパークラスMathematician
に設定され、スーパークラスまたは祖先チェーンは保持されます。
クラスを含むリファレンスはですか?たとえば、Object
クラスに含まれるKernel
モジュールへの参照を取得したいとします。
あなたの意図をさらに明確にするための例を示してください。 –
なぜ 'module kernel 'を再オープンすれば十分ではないでしょうか? –
さて、[モジュール#included_modules](http://ruby-doc.org/core-2.4.0/Module.html#method-i-included_modules): 'モジュールM;終わり;モジュールN;終わり;クラスC; Mを含む; Nを含む;終わり; C.included_modules#=> [N、M、Kernel] '。それはあなたが探しているものですか? –