我有一個運行Lua腳本的應用程序。每個Lua腳本可能會運行多次。每次按下某個鍵時,甚至可能會運行一些腳本。Lua - 在不重新解析腳本的情況下重置狀態
我希望這些腳本在每次運行之間「重置」。即,如果用戶設置了變量Foo,則在下次運行時,Foo不應該存在於腳本中,直到用戶再次定義爲止。
問題是,如果我想要有這樣的行爲,我需要每次創建一個新的lua_State,然後每次打開它,然後每次解析腳本文件,這似乎很沒有優化。
加載庫可能是一個相當輕量級的操作(我假設),但解析腳本可能不是。
有沒有辦法重置Lua腳本的狀態(即清除用戶代碼定義的變量)而不創建新的lua_State並重新解析整個Lua腳本文件?我只希望腳本文件在應用程序啓動時被解析一次,因爲它們在運行時不會被修改。
謝謝。 :)
編輯:我發現這個話題,但它沒有詳細說明要做到這一點:http://lua-users.org/lists/lua-l/2006-01/msg00493.html
編輯:lua_setfenv似乎與這一點。我會多挖一點。
編輯:好像沒有更多的LUA 5.2的lua_setfenv。由於我使用5.3,我必須設置environement(即隱藏表nammed _ENV,其中存放變量)以便做到這一點,並因此重新加載所有內容,這是我不想做的事情...
你可以做到這一點與協程可能嗎? – warspyking