Вместо использования module
и dofile
в Lua 5.1 лучше просто возвращать таблицу, представляющую ваш модуль, при запуске скрипта. Все функции и переменные должны быть объявлены как local
в скрипте модуля, чтобы возвращаемая таблица предоставляла единственную точку доступа, и никакие глобальные переменные из других модулей не вытеснялись. Модуль должен быть импортирован с использованием require
следующим образом.
mod_modoo.lua:
return { foo = 1, bar = { 12, 34 } }
modoo_test.lua:
> local modoo = require "mod_modoo"
Тем не менее, часто бывает удобно представить таблицу модулей (т.е. modoo
) как глобальную без ее явного назначения. Для этого присвойте таблице модулей глобальную ссылку в дополнение к ее возвращению из скрипта. В этом случае модуль можно использовать следующим образом:
mod_modoo.lua:
modoo = { foo = 1, bar = { 12, 34 } }
return modoo
modoo_test.lua:
> require "mod_modoo"
> print(modoo.foo)
1
См. Статью Lua Module Critiqued для получения дополнительной информации по этому вопросу.