【Ruby3.x】Module::method_defined?()メソッドの使い方
method_defined?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
method_defined?メソッドは、指定された名前のメソッドが、レシーバであるモジュールやクラスに定義されているかどうかを判定するメソッドです。このメソッドの主な役割は、プログラムの実行時に特定のメソッドが存在するかどうかを確認し、それに応じた処理を行う際に役立つ情報を提供することです。
確認の対象となるのは、そのモジュールやクラス自身、またはそれが継承している親クラスやインクルードしているモジュールに定義されているメソッドです。つまり、継承チェーン全体にわたってメソッドの存在を調べることができます。ただし、このメソッドが検出するのは、publicおよびprotectedなメソッドに限られます。privateなメソッドは検出の対象外となりますので注意が必要です。
引数には、確認したいメソッドの名前をシンボル(例: :method_name)または文字列(例: "method_name")で渡します。メソッドが存在していればtrueを、存在しなければfalseを真偽値として返します。
この機能は、特にライブラリを作成する際や、動的にメソッドの有無をチェックして異なる振る舞いをさせたい場合など、プログラムの柔軟性と堅牢性を高めるために利用されます。例えば、特定の機能が利用できるかどうかを実行時に判断する際に活用できます。
構文(syntax)
1class MyModule 2 def instance_method_example 3 # ... 4 end 5end 6 7MyModule.method_defined?(:instance_method_example) 8MyModule.method_defined?("another_method")
引数(parameters)
symbol
- symbol: メソッド名をシンボルで指定します
戻り値(return)
Boolean
指定されたクラスやモジュール内に、指定された名前のメソッドが定義されている場合に true を返します。定義されていない場合は false を返します。