Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > BasicObjectクラス > __send__

instance method BasicObject#__send__

__send__(name, *args) -> object[permalink][rdoc]
__send__(name, *args) { .... } -> object

オブジェクトのメソッド name を args を引数にして呼び出し、メソッドの結果を返します。

ブロック付きで呼ばれたときはブロックもそのまま引き渡します。

[PARAM] name:
呼び出すメソッドの名前。 Symbol または文字列で指定します。
[PARAM] args:
メソッドに渡す任意個の引数

例:

class Mail
  def delete(*args)
    "(Mail#delete) - delete " + args.join(',')
  end
  def send(name, *args)
    "(Mail#send) - #{name} #{args.join(',')}"
  end
end
mail = Mail.new
mail.send :delete, "gentle", "readers"       # => "(Mail#send) - delete gentle,readers"
mail.__send__ :delete, "gentle", "readers"   # => "(Mail#delete) - delete gentle,readers"

[SEE_ALSO] Object#__send__