Lua 模块是一种代码组织方式,它允许你将代码封装在一个文件中,并在其他文件中重用这些代码。Lua 模块通常是一个返回表(table)的脚本,这个表包含了模块的所有公共接口(函数和变量)。私有函数和变量则不包含在这个表中,因此它们不能被外部直接访问,从而提供了封装和命名空间隔离。
创建模块
在Lua中创建模块通常遵循以下步骤:
- 定义模块表:创建一个表来存储模块的公共接口。
- 添加公共函数和变量:将需要公开的函数和变量添加到模块表中。
- 定义私有函数和变量:定义模块内部使用的私有函数和变量,它们不应该被外部直接访问。
- 返回模块表:脚本的最后返回模块表,这样其他脚本就可以通过这个表来访问模块的公共接口。
使用模块
使用模块通常涉及以下步骤:
- 加载模块:使用
require
函数加载模块。 - 访问模块的公共接口:通过加载的模块表访问模块的公共函数和变量。
项目代码示例
假设我们有一个名为 module.lua
的模块文件和一个主脚本 main.lua
。
module.lua(模块定义):
-- 定义一个名为 module 的模块
module = {
}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个公有函数
function module.func1()
io.write("这是一个公有函数!\n")
end
-- 定义一个私有函数
local function func2()
print("这是一个私有函数!")
end
-- 定义一个公有函数,它调用私有函数
function module.func3()
func2()
end
-- 返回模块表
return module
main.lua(使用模块):
-- 加载模块
local myModule = require("module")
-- 访问模块的常量
print(myModule.constant)
-- 调用模块的公有函数
myModule.func1()
-- 调用模块的另一个公有函数
myModule.func3()
-- 下面的调用将会失败,因为 func2 是私有的,外部无法访问
-- myModule.func2() -- 这将导致一个错误