2 つのクロージャがアップバリューをどのように共有するのか? そして、それはどのように機能しますか?
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()
それから呼び出すと、定義された in がfoo()
出力されますが、それらは異なる関数であるため、クロージャの上位値が異なるべきではありませんか? したがって、一方の関数がその上位値を変更しても、もう一方は同じままです。それとも特別なアップバリューですか?_ENV
foo()
_ENV
ありがとう