【Ruby3.x】Module::instance_methods()メソッドの使い方
instance_methodsメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
instance_methodsメソッドは、レシーバであるモジュールやクラスに定義されているインスタンスメソッドのリストを取得するメソッドです。このメソッドを呼び出すと、そのモジュールやクラスが提供するメソッドの名前がシンボル(例: :to_s)として格納された配列が返されます。
このメソッドは include_super という引数を受け取ります。この引数は、スーパークラスやインクルードされたモジュールで定義されているメソッドを結果に含めるかどうかを制御します。include_super を省略した場合や true を指定した場合は、レシーバ自身に定義されているメソッドだけでなく、継承元やインクルード元で定義されたすべてのインスタンスメソッドがリストに含まれます。これにより、そのオブジェクトが利用できるすべての公開メソッドを一覧で確認することができます。
一方、include_super に false を指定した場合は、レシーバであるモジュールやクラス自身に直接定義されているインスタンスメソッドのみがリストに含まれ、継承元やインクルード元のメソッドは除外されます。これにより、そのクラスやモジュールが独自に拡張したり、新たに定義したりした機能だけを把握することが可能です。
このメソッドは、特定のクラスやモジュールがどのような振る舞いを持ち、どのような操作が可能であるかをプログラムから動的に確認したい場合に非常に役立ちます。特に、プログラムの実行中にクラスの構造を調べたり、メタプログラミングを行う際などに利用されます。
構文(syntax)
1class MyClass 2 def my_method 3 end 4end 5 6MyClass.instance_methods 7MyClass.instance_methods(false)
引数(parameters)
include_super = true
- include_super: boolean = true: スーパークラスで定義されたメソッドも結果に含めるかどうかを指定する真偽値
戻り値(return)
Array<Symbol>
このメソッドは、レシーバであるモジュールが持つインスタンスメソッドの名前を、シンボルの配列として返します。