假设我想为一组 GUI 控件创建一个模块,我将如何创建一个模块来加载所有 GUI 脚本,我是否应该将这些脚本本身作为模块?我在想有一个这样的系统:
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")
会像我预期的那样工作吗?
抱歉,如果这不是很清楚不得不匆忙写下,谢谢 :)
最佳答案
你实际上在这里问了两个问题:
答案是 - 是。将该文件称为 mymodule/init.lua
是一种不成文的标准。大多数人的 ?/init.lua
包含在他们的 path
中,所以你可以只写 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
答案也是是,只要定义变量的文件在使用变量的文件。
https://stackoverflow.com/questions/3849642/