--脚本.lua 局部 x = 0
--main.lua dofile("script.lua")
现在我们超出了 script.lua 范围,因此我们无法直接访问 x 变量。但即使 x == nil,它仍然存在并且它的定义占用内存。 如何才能彻底删除x呢?或者如何加载数千个脚本来做一些事情,并将这些脚本一一完整地释放出来? 我的记忆中不再需要他们的当地人了
唯一有效的是 BAD EVIL 全局变量。如果我使用全局 x = 0,那么 x = nil 就可以做我想做的事,但是每个专业 lua 用户都一直说全局变量很糟糕。
那些局部变量仍然被全局函数引用。
[...] 无法从 Lua 访问意味着变量和 另一个活动对象都没有引用该对象。
如果我理解正确的话,这个参考是一个上值:
当创建一个 C 函数时,可以将一些值与其关联,从而创建一个 C 闭包 [...];这些值称为 upvalues,无论何时调用函数都可以访问它。