Ich habe eine Anwendung, die Lua-Skripte ausgeführt wird. Jedes Lua-Skript wird wahrscheinlich mehrmals ausgeführt. Einige Skripts können sogar jedes Mal ausgeführt werden, wenn eine Taste gedrückt wird.Lua - Reseting den Zustand eines Skripts ohne neuparsen es
würde ich diese Skripte wie zwischen jedem Durchlauf „Reset“ zu sein. Wenn ein Benutzer beispielsweise eine Variable Foo setzt, sollte Foo beim nächsten Mal nicht im Skript vorhanden sein, bis der Benutzer es erneut definiert.
Das Problem ist, dass, wenn ich ein solches Verhalten haben wollen, ich brauche ein neues lua_State jedes Mal zu erstellen, öffnen Sie dann die Bibliotheken in sie jedes Mal, und dann die Skript-Datei jedes Mal zu analysieren, die sehr unoptimized scheint.
die Bibliotheken Laden kann einen eher leichten Betrieb sein (ich nehme an), aber die Skripte Parsen ist wahrscheinlich nicht.
Gibt es eine Möglichkeit, den Status eines Lua-Skripts (d. H. Klare benutzercodedefinierte Variablen) zurückzusetzen, ohne einen neuen lua_State zu erstellen und die gesamte Lua-Skriptdatei zu reparieren? Ich möchte nur, dass die Skriptdateien beim Start der Anwendung einmal analysiert werden, da sie zur Laufzeit nicht geändert werden.
Vielen Dank. :)
EDIT: Ich habe dieses Thema gefunden, aber es ist nicht detailliert über das zu tun: http://lua-users.org/lists/lua-l/2006-01/msg00493.html
EDIT: lua_setfenv scheint, dass zusammenzuhängen. Ich werde ein bisschen mehr graben.
BEARBEITEN: Es scheint, als ob es nicht mehr lua_setfenv als von LUA 5.2 gibt. Da ich bin mit 5.3 würde ich die environement gesetzt hat (dh eine versteckte Tabelle nammed _ENV wo Variablen gespeichert sind), um das zu tun, und damit alles neu zu laden, das ist, was ich will nicht zu ...
Sie können es Lua Seite tun vielleicht mit Koroutinen? – warspyking