Lua - 关于模块的问题
问题描述:
假设我想为一组GUI控件创建一个模块,我将如何创建一个模块来加载所有GUI脚本,并且应该将这些脚本作为模块本身来使用?我想有这样一个系统:Lua - 关于模块的问题
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,因此您只需编写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
),则答案也是是。
非常感谢,我似乎无法找到关于lua模块的许多文档,这有助于吨。 – Blam 2010-10-03 18:30:39