两个闭包如何共享一个上值?它是如何工作的?
function print_env()
print(_ENV) --_ENV is an upvalue
end
function foo()
_ENV = { print = print, print_env = print_env} --redefine the _ENV upvalue
print(_ENV) --prints: 0094CF40
print_env() --prints: 0094CF40
end
当我print_env()
从中调用foo()
时打印_ENV
定义的 in foo()
,但是由于它们是不同的函数,它们的闭包不应该有不同的上值吗?因此,当一个函数修改其上值时,另一个保持不变。还是_ENV
特殊的升值?
谢谢