1. ホーム
  2. ruby

[解決済み] Rubyのsend()は何をするのですか?

2022-08-20 03:12:04

質問

誰か教えてください。

send("#{Model.find...}")

は、どうなんでしょうか?

どのように解決するには?

send は、あるメソッドが反応するまで(その名前が最初の引数に一致するため)、オブジェクトのインスタンスとクラス階層内のその祖先にメッセージを送ります。

実用的には、これらの行は同等です。

1.send '+', 2
1.+(2)
1 + 2

なお send は可視性チェックをバイパスするので、プライベートメソッドも呼び出すことができます(ユニットテストに便利です)。


sendの前に本当に変数がない場合、グローバルなObjectが使用されることを意味します。

send :to_s    # "main"
send :class   # Object