说我有一个脚本
my_global = my_cpp_class()
my_global = nil
现在,虽然这正确调用了 my_cpp_class 的析构函数,但这段代码不会:
my_global = my_cpp_class()
call_script("a.lua") -- a.lua contains "my_global = nil"
-- "call_script" is actually a simplified notation
-- I create script as userdata and then I can
-- set its child scripts that should be reloaded once script is modified
当我简单地将 call_script 替换为 dofile 时也是如此。
基本上,我希望一个特定的脚本文件能够将“nil”分配给现有的全局,以便旧值变得不可访问。
现在我需要的是实时重新加载脚本 - 每当修改脚本文件时,它都会立即编译并call_script
在运行时使用其子脚本再次调用,因此它应该导致重新分配全局变量,因此旧值应该被垃圾收集.
是否有更简单、更首选的方式来重新加载此类脚本?
我应该以某种方式使用本地人,还是操纵环境?如果相关,我使用 luabind。