gpt4 book ai didi

ruby - Ruby 中 Kernel#eval 和 Binding#eval 的区别

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:21 24 4
gpt4 key购买 nike

为什么 Binding#eval 会调用 block ,而 Kernel#eval 不会?

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

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

最佳答案

我认为,在第五行,第二个参数必须是'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

关于ruby - Ruby 中 Kernel#eval 和 Binding#eval 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com