From: Shugo Maeda Date: 2001-05-30T14:16:24+09:00 Subject: [ruby-list:29889] Re: "" で行われる展開を eval 無しで… 前田です。 At Wed, 30 May 2001 14:04:34 +0900, ABE Shigeru wrote: >  ところで、 > > def foo ( x, y = binding ) > p eval(x,y) > end > >  とすると、foo で y = binding が実行されるのですね。 >  foo が呼ばれた時点で y が初期化されるのか、それともメソッ > ド内に移ってから初期化されるのか、はっきりと書かれていなかっ > たような気がしたので、ちょっと期待したのですけど(笑)。 そうですね。 石塚さんは呼び出し元のbindingを得るために、こんな手を使っていたよ うな気がします。 def foo(s, &b) p eval(s, b) end x = 1 foo("#{x}") {} >  毎回 binding を書かなければならないのも鬱陶しいので、ブロ > ックを使った方法でやってみようと思います。 空のブロックを与えるのもうっとうしいかもしれないので、この場合は 素直にブロックを使った方がよいでしょうね。 Rubyでは、単に実行を遅延させたいだけならevalよりブロックを使う方 がよいんじゃないかなと思います。 -- 前田 修吾