【Ruby3.x】Module::public_instance_method()メソッドの使い方
public_instance_methodメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
public_instance_methodメソッドは、指定された名前の公開インスタンスメソッドに対応するUnboundMethodオブジェクトを返すメソッドです。このメソッドは、Moduleクラス、またはそのサブクラスであるClassのインスタンスに対して呼び出すことができます。引数には、取得したいメソッドの名前をシンボルまたは文字列で指定します。
UnboundMethodオブジェクトとは、まだ特定のオブジェクトに結びついていないメソッドそのものを表すものです。これは、特定のインスタンスに依存せず、メソッドの定義や振る舞いを抽象的に扱う際に非常に役立ちます。取得したUnboundMethodオブジェクトは、後からbindメソッドやbind_callメソッドを使って、そのメソッドを呼び出したいオブジェクトに結びつけることで、実際にメソッドを実行することが可能になります。
このメソッドが対象とするのは、その名前が示す通り、モジュールやクラスで定義された「公開」インスタンスメソッドのみです。プライベートメソッドやプロテクテッドメソッドは対象外となります。
public_instance_methodを使用することで、プログラムの実行中に動的にメソッドの情報を取得したり、あるクラスのメソッドを別のクラスのインスタンスに適用するといった、柔軟なメタプログラミングが可能になります。指定された名前の公開インスタンスメソッドが存在しない場合は、NameErrorが発生しますので注意が必要です。
構文(syntax)
1class MyClass 2 def public_method 3 # ... 4 end 5end 6 7method_object = MyClass.public_instance_method(:public_method)
引数(parameters)
sym
- sym: public_instance_method を呼び出す対象となるインスタンスメソッドの名前を指定するシンボル
戻り値(return)
UnboundMethod
指定されたモジュール(Module)に定義されている、指定された名前(String)の公開インスタンスメソッドを表すUnboundMethodオブジェクトを返します。