考虑这段代码:
x = 10
10.times{
x++
}
assert binding.getVariable("x") == 20
就目前而言,我担心这就是上面代码中发生的事情:Script
类引用了x
具有值的变量,10
它调用了times
闭包,该闭包x
将从Script
. 所以基本上范围x
是由Script
班级完成的。
但我想知道什么时候binding
出现的?从某种意义上说,我没有打电话new Binding()
或任何事情,但仍然存在。
我有点困惑。的具体用途是binding
什么?类是否Script
创建binding
,如果是这样,它是如何管理方法内的x
范围times
?
提前致谢。