Луа - Вопрос по модулям - PullRequest
       17

Луа - Вопрос по модулям

1 голос
/ 03 октября 2010

Скажем, я хочу создать модуль, скажем, для набора элементов управления графическим интерфейсом. Как мне создать модуль, который будет загружать все сценарии графического интерфейса, и должен ли я размещать эти сценарии как сами модули?Я думал о том, чтобы иметь такую ​​систему:

module("bgui", package.seeall)

dofile("modules/bgui/control.lua")
dofile("modules/bgui/container.lua")
dofile("modules/bgui/screenmanager.lua")
dofile("modules/bgui/form.lua")
dofile("modules/bgui/button.lua")
dofile("modules/bgui/textbox.lua")
dofile("modules/bgui/label.lua")

Будут ли во всех файлах работать переменные, которые они устанавливают как часть модуля bgui?Ака если в control.lua у меня есть control = {...}, будет ли он определен как bgui.control или я должен сделать control.lua самим модулем, что-то вроде module("bgui.control") будет работать так, как я собираюсь?если это не очень понятно, нужно было написать это в спешке, спасибо:)

1 Ответ

8 голосов
/ 03 октября 2010

Вы на самом деле задаете здесь два вопроса.

Первый: «Это способ загрузки большого количества файлов в модуль, хорошо?»

Ответ - да.Это своего рода невысказанный стандарт для вызова этого файла mymodule/init.lua.У большинства людей есть? /Init.lua, включенный в их путь, так что вы можете просто написать require('modules/bgui'), и файл init.lua будет загружен автоматически.

При этом вы можете удалить некоторое дублирование кода, используявременная таблица и цикл:

# modules/bgui/init.lua
local files = {
  'control', 'container', 'screenmanager', 'form', 'button', 'textbox', 'label'
}
for _,file in ipairs(files) do dofile("modules/bgui/" .. file .. ".lua") end

Второй вопрос: «Объекты, определенные в одном файле, доступны в bgui?».Ответ также да , если файл, определяющий переменную, "готов" (с dofile или require) перед файлом, использующим переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...