Что путь состоит в том, чтобы перезагрузить lua сценарии во время времени выполнения?

Я хочу перезагрузить lua сценарии во времени выполнения. Что пути состоят в том, чтобы сделать это? Необходимо ли просто повторно инициализировать lua систему и затем перечитать ли все lua файлы?

5
задан zooropa 11 May 2010 в 15:39
поделиться

1 ответ

Если (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
> 

Аналогично, если немодульные скрипты ведут себя хорошо в том смысле, что они (а) определяют только одну таблицу и (б) не влияют на глобальные или другие таблицы, то простая перезагрузка скрипта тоже сработает.

13
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: