【Ruby3.x】Module::ancestors()メソッドの使い方
ancestorsメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
ancestorsメソッドは、レシーバであるModuleクラスのインスタンス(つまりクラスやモジュール自身)が持つ祖先を配列として返すメソッドです。このメソッドは、Rubyにおいてメソッドが呼び出された際に、そのメソッドがどのクラスやモジュールで定義されているかを探索する順序、通称「メソッド探索順序(MRO)」を理解する上で非常に重要です。
返される配列には、レシーバ自身を含め、そのレシーバが継承しているスーパークラスや、インクルード(組み込み)しているモジュールが、メソッド探索が行われる順番で格納されます。例えば、あるクラスが複数のモジュールをインクルードし、さらにスーパークラスを継承している場合、ancestorsメソッドはそのクラス、インクルードされたモジュール群、スーパークラス、そして最終的にObject、Kernel、BasicObjectといった基底の祖先までを、Rubyがメソッド呼び出しの際にチェックする順序で明確に示します。
この機能は、複雑なクラスやモジュールの階層構造を把握したい場合や、特定のメソッドがどの祖先によって提供されているのか、あるいは意図しないメソッドの上書きが発生していないかなどを調査したい場合に非常に役立ちます。Rubyのオブジェクト指向における継承とモジュールの組み込みがどのように作用しているかを、具体的に確認するための強力なツールとして利用できます。
構文(syntax)
1class MyClass 2end 3 4MyClass.ancestors
引数(parameters)
引数なし
引数はありません
戻り値(return)
Array
このメソッドは、そのモジュールを継承しているクラスやモジュールの階層を、親へ遡る順序で配列として返します。