代码之家  ›  专栏  ›  技术社区  ›  Blam

Lua-模块问题

  •  1
  • Blam  · 技术社区  · 14 年前

    假设我想为一组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 = {...} 它是定义为bgui.control,还是应该将control.lua作为模块本身,比如 module("bgui.control") 我想这样行吗?

    对不起,如果不太清楚的话,就赶紧写,谢谢:)

    1 回复  |  直到 14 年前
        1
  •  7
  •   kikito    14 年前

    你实际上在问两个问题。

    第一个问题是“这种方式在模块上加载大量文件是否正常?”

    答案是—— . 调用该文件是一种潜规则 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 )在文件使用变量之前。