sendメソッド

rubyのクラスマクロとか調べてたら出てきたので自分メモ用に書きます。素人ですみません。

object.send(name,*args)
  • レシーバ(object)の持っているメソッドを呼び出す
  • 第1引数nameには、メソッド名をシンボルか文字列で渡す
  • メソッドに引数を渡したいときは、第2引数args以降に引数を並べる
  • 戻り値は、呼び出したメソッドの戻り値が変える
  • sendが再定義された場合に備えて、別名の __send__ がある
class MyClass
  def hoge(n = nil)
    n ? Array.new(n, "hoge") : "hoge!"
  end
end

mc = MyClass.new
mc.send(:hoge)
#=> hoge
mc.send(:hoge, 3)
#=> ["hoge", "hoge", "hoge"]

使いどころ

オブジェクトに渡すメソッドを動的に指定できる?とか?わかりません。

参考URL

http://ref.xaio.jp/ruby/classes/object/send http://ref.xaio.jp/ruby/classes/object/send http://blog.livedoor.jp/badrequest400/archives/2350825.html