Rubyリファレンス: Home

__send__ (Object)

Edit   History

標準クラス・モジュール > Object > __send__

obj.__send__(name, [arg, ...])

__send__メソッドは、sendの別名です。レシーバの持っているメソッドを呼び出します。詳しくはsendの説明をご覧ください。

Ruby 1.9 Ruby 1.9では、Objectクラスの__send__メソッドはBasicObjectに移されました。

sendメソッドを上書きして別の機能に当てたクラスでも、__send__メソッドを使えばメソッドの呼び出しができます。自作のクラスでは__send__メソッドを上書きしないでください(上書きすると警告が出ます)。

class Cat
  def hello(n = nil)
    n ? Array.new(n, "meow!") : "meow!"
  end
end
 
cat = Cat.new
p cat.__send__(:hello, 3)
["meow!", "meow!", "meow!"]

関連項目