Object#instance_exec欲しいなあ
Ruby 1.8.7にはいろいろなRuby 1.9のメソッドがbackportされてウハウハなんだが、Object#instance_execが含まれなかったのが残念。
ついにEnumerable::Enumeratorまで入ったのになぁ。
Object#instance_execはObject#instance_evalにブロック引数が渡せるやつ。
class Foo def plus(a, b) a+b end end Foo.new.instance_exec(1, 3) {|a,b| plus(a,b) } # => 4
instance_execを実装するにはかなり大変である。
Ruby 1.8.7はRuby 1.9の振りをしているけどRuby 1.9になりきれてない感じ…大人ぶってる思春期の少女みたいだ。
それにしても、instance_execをselfに対して適用するとLispのletみたいだな。lambdaもいいけど、instance_execのほうがletっぽい。
instance_exec(1, 2) do |a, b| a # => 1 b # => 2 a + b # => 3 end lambda do |a, b| a # => 1 b # => 2 a + b # => 3 end.call(1, 2)