2012年9月19日水曜日

Rubyのsendメソッド

たまに見かけて何だっけ? と思うシリーズ。Object#sendは指定された名前のメソッドを呼び出すメソッド。

o.send(‘foo’)
o.send(:bar)
o.send(:baz, 1, 23)
o.foo()
o.bar()
o.baz(1, 23)
は、大体同じように振る舞う。上手く使えば動的なコードを簡潔に書ける。

ただしsendはアクセス権をガン無視するので、利便性と危険性は表裏一体。取り扱いにはinstance_eval級の注意が必要。

0 件のコメント:

コメントを投稿