【Ruby3.x】Module::protected_method_defined?()メソッドの使い方
protected_method_defined?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
protected_method_defined?メソッドは、レシーバーであるModuleまたはClassに、引数で指定された名前のメソッドがprotectedアクセス権で定義されているかどうかを真偽値で判定するメソッドです。
引数には、確認したいメソッドの名前をSymbol型またはString型で指定します。このメソッドは、指定された名前のメソッドがprotectedメソッドとして存在する場合にtrueを、それ以外の場合にfalseを返します。
ここでいうprotectedメソッドとは、そのメソッドが定義されたクラスのインスタンス自身、またはそのサブクラスのインスタンスからのみ呼び出し可能なメソッドを指します。publicでもprivateでもない、限定的なアクセス範囲を持つメソッドです。
このメソッドを使用することで、プログラムの実行中にクラスやモジュールの内部構造を動的に調べ、特定のprotectedな機能が利用可能かを確認できます。主に、メタプログラミングやリフレクションを用いる場面で、クラスの設計意図を尊重しつつ、その振る舞いを安全に検証する際に役立ちます。継承されたメソッドや、インクルードされたモジュールで定義されたメソッドも判定の対象に含まれるため、より包括的な調査が可能です。
構文(syntax)
1class MyClass 2 protected 3 def my_protected_method 4 # ... 5 end 6end 7 8MyClass.protected_method_defined?(:my_protected_method)
引数(parameters)
symbol, inherit = true
- symbol: protectedメソッドの名前を表すシンボル
- inherit = true: 親クラスのprotectedメソッドを調べるかどうかを指定する真偽値(デフォルトはtrue)
戻り値(return)
bool
指定されたモジュール内にprotectedメソッドが定義されている場合にtrueを、そうでない場合にfalseを返します。