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