我对ruby中块绑定的定义感到困惑.这是两个样本:
def redfine_a(&block)
a = 2
puts eval("a", block.binding)
block.call
end
a = "hello"
puts redfine_a {a}
Run Code Online (Sandbox Code Playgroud)
这个可以运行预期的结果,而第二个:
def redefine_a(&block)
a= 2
puts eval("a", block.binding)
block.call
end
puts redefine_a{a= "hello"}
Run Code Online (Sandbox Code Playgroud)
会抱怨:
undefined local variable or method `a' for main:Object (NameError)
Run Code Online (Sandbox Code Playgroud)
删除后puts eval("a", block.binding),我的代码运行:
def redefine_a(&block)
a= 2
block.call
end
puts redefine_a{a= "hello"}
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |