【Ruby3.x】Module::protected_instance_methods()メソッドの使い方
protected_instance_methodsメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
protected_instance_methodsメソッドは、モジュールまたはクラスが持つprotectedなインスタンスメソッドの名前を一覧で取得するメソッドです。Rubyにおいて、protectedなインスタンスメソッドとは、そのメソッドが定義されたクラスのインスタンス自身、またはそのクラスを継承したサブクラスのインスタンス内からのみ呼び出すことが許可されているメソッドを指します。これにより、外部からの直接的なアクセスは制限されますが、同じクラスの他のインスタンスやサブクラスからは利用できるため、プライベートメソッドよりはアクセス範囲が広いです。
このメソッドを呼び出すと、該当するモジュールやクラスで定義されているprotectedなインスタンスメソッドの名前が、シンボルの配列として返されます。引数としてinclude_superを指定することができ、デフォルトではtrueが設定されています。include_superがtrueの場合、現在のクラスだけでなく、そのスーパークラスやインクルードしているモジュールで定義されているprotectedメソッドもすべて含めて返します。もしinclude_superにfalseを指定すると、現在のモジュールやクラス自身が直接定義したprotectedメソッドのみを返します。このメソッドは、クラスやモジュールの内部構造を調べたい場合や、特定のアクセスレベルを持つメソッドの一覧を取得したい場合に有用です。
構文(syntax)
1class MyClass 2 protected 3 def my_protected_method 4 # 処理内容 5 end 6end 7 8MyClass.protected_instance_methods(false)
引数(parameters)
include_super = true
- include_super: true (デフォルト):
スーパークラスで定義されたprotectedメソッドを含めるかどうかを指定する真偽値。
falseを指定すると、そのクラス自身で定義されたprotectedメソッドのみが返されます。
戻り値(return)
Array<Symbol>
このメソッドは、クラスまたはモジュールが持つ protected アクセス指定子で定義されたインスタンスメソッドのシンボル名を配列として返します。