ブラックボックスを撲滅したい

2017年1月よりフリーランスに転向したシステムエンジニアのブログ。プログラミングスクールではRubyの勉強をしていたが、現在はJavaによる開発がメイン。当ブログは筆者の学習メモを投稿していく予定。

【Ruby】ancestorsとは?

ancestorsとは?

呼び出し元のクラスオブジェクトがミックスインしているモジュールや、継承しているクラスを配列として取得するメソッド

ancestorsメソッドで取得した配列の先頭要素から、メソッドを探しに行く順番となる。


補足:ミックスインとは、includeやextendを使って、モジュールに定義した機能をクラスに追加すること。

サンプルコード

Car.ancestors  # => [Car, Object, Kernel, BasicObject]

上記のコードは、Carクラスがミックスインしているモジュールや継承しているクラスを配列として取得している。
先頭要素からメソッドなどを探しにいく。

例えば、以下のコードの場合、runメソッドを呼び出そうとする際は、

「Car→Object→Kernel→BasicObject」

の順番でrunメソッドを探しに行く

car = Car.new
car.run


参照
Module#ancestors (Ruby 2.7.0 リファレンスマニュアル)
プロになるためのRuby入門