【Ruby3.x】Method::[]()メソッドの使い方
[]メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
[]メソッドは、RubyにおいてMethodクラスのインスタンスに対して使用され、そのインスタンスが表すメソッドの引数に関する詳細な情報を取得するメソッドです。
このメソッドは、プログラム自身が自身の構造を動的に調べたり変更したりする「リフレクション」と呼ばれる機能の一部として利用されます。具体的には、あるメソッドがどのような種類の引数(必須引数、オプション引数、可変長引数、キーワード引数、ブロック引数など)を受け付けるのかを、実行時に調べたい場合に大変役立ちます。
引数を指定せずに[]メソッドを呼び出すと、そのメソッドが受け取る必須引数とオプション引数の合計数を数値で返します。例えば、def my_method(a, b=1)というメソッドでは、my_methodを表すMethodオブジェクトに対して[]を呼び出すと2が返されます。
また、[]メソッドの引数として、:req(必須引数)、:opt(オプション引数)、:rest(可変長引数)、:key(キーワード引数)、:keyreq(必須キーワード引数)、:keyrest(可変長キーワード引数)、:block(ブロック引数)といった特定のシンボルを渡すことで、それぞれの引数の種類に関する詳細な情報を取得できます。これにより、各引数の数や、可変長引数やブロック引数であればその引数名(シンボルとして)などを確認することが可能です。
このように[]メソッドを用いることで、メソッドの引数シグネチャを動的に解析し、それを基にした柔軟な処理や、フレームワークにおける自動的な引数検証といった高度な機能を実装する際に重宝されます。
構文(syntax)
1class Example 2 def add(a, b) 3 a + b 4 end 5end 6 7instance = Example.new 8add_method = instance.method(:add) 9result = add_method[10, 20]
引数(parameters)
*rest
- rest: 実行するメソッドに渡す引数を任意の数だけ指定します。
戻り値(return)
Object
このメソッドは、メソッドオブジェクト自体を返します。