Вызов функций / переменных / таблиц из отдельного файла в Lua
В настоящее время я работаю над довольно подробным проектом в Lua, в частности, используя LOVE2D. Я сейчас пользуюсь require'file'
для того, чтобы получить доступ к различным частям моего проекта, но это кажется очень плохой формой. Я столкнулся с проблемой перезаписи таблиц из разных файлов с одинаковыми именами. Должен быть профессиональный, более чистый способ сделать это, но я не смог найти его. Кто-нибудь может мне помочь?
1 ответ
С помощью require
это правильный способ сделать это.
Думайте о модуле как о функции, которая выполняется при загрузке. Возвращаемое значение кэшируется и возвращается при последующих вызовах require. Так же, как вы бы использовали local
переменные для ограничения области действия в функции, вы можете сделать то же самое в модуле.
Я предполагаю, что ваши модули реализованы в виде глобальных таблиц:
mymodule = {}
function mymodule.foo()
return 'bar'
end
И вы загружаете модуль как:
require 'mymodule'
Просто измените таблицу модулей на local
Переменная и вернуть его:
local mymodule = {}
function mymodule.foo()
return 'bar'
end
return mymodule
Затем вы можете загрузить модуль с любым именем, которое вы выберете:
local mymodule = require 'mymodule'
Поскольку вы не создаете глобальные переменные, вам не нужно беспокоиться о перезаписи других модулей.
Приведенный выше пример взят из учебного модуля по веб-сайту lua-users.org. Проверьте это для получения дополнительной информации о создании модулей. Также стоит прочитать, как писать модули Lua в мире post-module().