Mam aplikację, która uruchamia skrypty Lua. Każdy skrypt Lua prawdopodobnie będzie działał kilka razy. Niektóre skrypty mogą być uruchamiane za każdym naciśnięciem klawisza.Lua - Reseting stanu skryptu bez jego reparacji
Chciałbym, aby te skrypty zostały "zresetowane" pomiędzy kolejnymi uruchomieniami. Jeżeli użytkownik ustawi zmienną Foo, to Foo nie powinno istnieć w skrypcie przy następnym uruchomieniu, dopóki użytkownik nie zdefiniuje go ponownie.
Problem polega na tym, że jeśli chcę mieć takie zachowanie, muszę za każdym razem tworzyć nowe lua_State, a następnie otwierać za każdym razem biblioteki, a następnie analizować plik skryptowy za każdym razem, co wydaje się bardzo nieoptymalizowane.
Ładowanie bibliotek może być raczej lekką operacją (jak zakładam), ale parsowanie skryptów prawdopodobnie nie jest.
Czy istnieje sposób, aby przywrócić stan skryptu Lua (to jasne kod użytkownika zdefiniowane zmienne) bez tworzenia nowego lua_State i ponownej analizy składniowej cały plik skryptowy Lua? Chciałbym tylko, aby pliki skryptów były analizowane podczas uruchamiania aplikacji, ponieważ nie są modyfikowane w czasie wykonywania.
Dziękuję. :)
EDIT: Znalazłem ten temat, ale to nie jest szczegółowo o to zrobić: http://lua-users.org/lists/lua-l/2006-01/msg00493.html
EDIT: lua_setfenv wydaje się być związane z tym. Jeszcze trochę wykopię.
EDIT: Wygląda na to, że nie ma już lua_setfenv jak LUA 5.2. Ponieważ używam 5.3, musiałbym ustawić środowisko (tj. Ukrytą tabelę nazwaną _ENV, w której zmienne są przechowywane), aby to zrobić, i w ten sposób ponownie załadować wszystko, czego nie chcę robić ...
Możesz to zrobić po stronie Lua z coroutinami? – warspyking