Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】BasicObject::__send__()メソッドの使い方

__send__メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

__send__メソッドは、レシーバに対して動的にメソッドを呼び出すメソッドです。このメソッドは、呼び出したいメソッドの名前をシンボルまたは文字列で指定し、そのメソッドに渡す引数を指定することで、実行時に任意のメソッドを実行します。通常のメソッド呼び出しでは、メソッド名をコード中に直接記述しますが、__send__メソッドを用いることで、メソッド名をプログラムの実行中に決定し、柔軟に処理を切り替えることが可能になります。

例えば、ユーザーからの入力に基づいて異なる処理を実行したい場合や、オブジェクトの内部構造にアクセスしてメソッドを呼び出すような、より高度なプログラミング(メタプログラミング)の場面で特に有用です。__send__メソッドは、レシーバが持つ公開(public)メソッドだけでなく、保護(protected)メソッドや非公開(private)メソッドも呼び出すことができます。これは通常のドット演算子を用いたメソッド呼び出しでは不可能な操作です。

このメソッドは、Rubyの全てのオブジェクトの基底クラスであるBasicObjectに定義されており、Rubyのほぼ全てのオブジェクトに対して利用できる普遍的な機能です。__send__メソッドを活用することで、プログラムの柔軟性や拡張性を大幅に向上させることができます。

構文(syntax)

1"hello".__send__(:upcase)

引数(parameters)

method_name, *args

  • method_name: 呼び出すメソッドの名前を指定するシンボルまたは文字列
  • *args: 呼び出すメソッドに渡す引数

戻り値(return)

Object

指定されたメソッド名(send)は、実際にはRubyのObjectクラス(BasicObjectのサブクラス)に定義されており、より広範なオブジェクトで利用可能です。

send メソッドは、メッセージ(メソッド呼び出し)をオブジェクトに送信し、そのメッセージに対する応答(メソッドの戻り値)を返します。

関連コンテンツ