Я хочу перезагрузить lua сценарии во времени выполнения. Что пути состоят в том, чтобы сделать это? Необходимо ли просто повторно инициализировать lua систему и затем перечитать ли все lua файлы?
Если (a) скрипты Lua находятся в модулях, и (b) модули не влияют на глобальные файлы или таблицы вне области действия модуля, вы можете использовать package.loaded.????? = nil
, чтобы заставить require
перезагрузить модуль:
> require "lsqlite3"
> =sqlite3.version
function: 0x10010df50
> sqlite3.version = "33"
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
33
> package.loaded.lsqlite3 = nil
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
function: 0x10010c2a0
>
Аналогично, если немодульные скрипты ведут себя хорошо в том смысле, что они (а) определяют только одну таблицу и (б) не влияют на глобальные или другие таблицы, то простая перезагрузка скрипта тоже сработает.