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?”。只要在使用变量的文件之前定义变量的文件是“已完成”(使用dofilerequire),则答案也是

+0

非常感谢,我似乎无法找到关于lua模块的许多文档,这有助于吨。 – Blam 2010-10-03 18:30:39