次のようなスクリプトがあるとします
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」を割り当てて、古い値がunreachableになるようにしたいと考えています。
これが必要なのは、スクリプトをリアルタイムでリロードすることです。スクリプト ファイルが変更されるとすぐにコンパイルされcall_script
、実行時に子スクリプトで再度呼び出されるため、グローバルが再割り当てされ、古い値がガベージ コレクションされる必要があります。 .
このようなスクリプトのリロードを行うためのより簡単で好ましい方法はありますか?
何らかの方法でローカルを使用するか、環境を操作する必要がありますか? 関連する場合は、luabind を使用します。