3

なぜBinding#evalブロックを呼び出すのに、呼び出さKernel#evalないのですか?

def bar; binding; end
bi = bar {|x| p(x+1)}

bi.eval "yield 2"       # ==> 3
eval "yield 2", binding # ==> LocalJumpError
4

1 に答える 1

6

5行目では、2番目の引数は「bi」でなければならないと思います。

$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

1 def bar; binding; end
2 bi = bar {|x| p(x+1)}
3
4 bi.eval "yield 2"  #==> 3
5 eval "yield 2", bi #==> 3
于 2013-03-26T21:00:34.960 に答える