lua的模块是由变量,函数等已知元素组成的table,因此创建一个模块很简单,就是创建一个table,然后把需要导出的常量,函数放入其中,最后返回这个table就行。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

-- 定义一个名为module的模块
module = {}

-- 定义一个常量
module.constant = "这是一个常量"

-- 定义一个函数
function ()
io.write("这是一个公有函数!")
end

local function func2()
print("这是一个私有函数!")
end

function module.func3()
func2()
end

return module

由上可知,模块的结构就是一个table结构,因此可以像操作调用table里的元素那样来操作调用模块里的常量或变量

require函数

lua提供了一个名为require的函数来加载模块,要加载一个模块,只要简单的调用就就可以了
例;

1
require("<模块名>")

或者

1
require "<模块名>"

执行require后会返回一个由模块常量或函数组成的table,并且还会定义一个包含table的全局变量

1
2
3
4
5
6
7
-- test_module.lua
-- module 模块为上文提到的module.lua
require("module")

print(module.constant)

module.func3()

以上代码执行结果为:

1
2
这是一个常量
这是一个私有函数!

或者给加载的模块定义一个别名变量,方便调用:

1
2
3
4
5
6
7
8
-- test_module2.lua 文件
-- module 模块为上文提到的module.lua
-- 别名变量 m
local m = require("module")

print(m.constant)

m.func3()