Скажем, у меня есть скрипт вроде
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, если это уместно.