【Ruby3.x】Method::call()メソッドの使い方
callメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
callメソッドは、Methodクラスのインスタンスが持っている、特定のメソッドを呼び出して実行するメソッドです。Rubyでは、メソッド自体を一つの値(オブジェクト)として扱いたい場合があります。その際に、Methodクラスのインスタンスを作成します。このMethodオブジェクトは、あるオブジェクトの、特定のメソッドを呼び出すための情報(参照)を一つにまとめたものです。例えば、Stringクラスのupcaseメソッドへの参照をMethodオブジェクトとして取得した場合、そのMethodオブジェクトに対してcallメソッドを呼び出すことで、元々持っていたupcaseメソッドが実行されます。
callメソッドを使う際、実行するメソッドが必要とする引数やブロックを、通常のメソッド呼び出しと同じように渡すことができます。Method#callを使う主な利点は、メソッドをその場で実行せずに後から実行させたり、メソッドを変数にしまって別の場所に渡したり、複数のメソッドをリストにまとめて管理したりと、メソッドを一つのデータのように扱えるようになる点です。
これは、イベント発生時に呼び出す処理(コールバック)を登録したり、実行する処理を柔軟に切り替えたりするような、プログラムの設計の幅を広げる際に役立ちます。直接メソッドを呼び出すobject.method_name(args)と機能的には似ていますが、Methodオブジェクトを介することで、どのオブジェクトのメソッドを実行するかという情報(コンテキスト)を保持できるため、より柔軟で強力なプログラミングを実現する上での重要な機能の一つです。
構文(syntax)
1class ExampleClass 2 def greet(name) 3 "Hello, #{name}!" 4 end 5end 6 7instance = ExampleClass.new 8method_obj = instance.method(:greet) 9puts method_obj.call("Ruby")
引数(parameters)
*rest
- *rest: 呼び出すメソッドに渡す任意の引数
戻り値(return)
Object
メソッドを実行した結果を返します。