模块与包
Lua 提供了简洁的 模块化机制,便于将代码拆分为独立文件和逻辑单元,
通过 require 可以方便地导入和复用模块。
🧩 创建模块
假设我们创建一个模块文件 math_utils.lua:
-- math_utils.lua
local M = {}
function M.add(a, b)
return a + b
end
function M.sub(a, b)
return a - b
end
return M
`
模块内部通常使用局部表
M保存函数,最后return M导出。
🔗 导入模块
在主程序中使用 require 导入模块:
local math_utils = require("math_utils")
print(math_utils.add(3, 5)) -- 输出 8
print(math_utils.sub(10, 4)) -- 输出 6
📦 包路径
Lua 根据 package.path 搜索模块文件:
print(package.path)
默认路径中使用 ? 占位符匹配模块名,例如:
./?.lua; /usr/local/share/lua/5.4/?.lua; ...
如果模块在其他目录,可通过修改
package.path或将模块放到标准路径中。
🧱 嵌套模块
模块可以嵌套形成命名空间:
-- utils/string_utils.lua
local M = {}
function M.upper(str)
return string.upper(str)
end
return M
local string_utils = require("utils.string_utils")
print(string_utils.upper("lua")) -- LUA
🧩 简化导入
模块也可以直接返回函数,适用于单一功能模块:
-- square.lua
return function(x)
return x * x
end
local square = require("square")
print(square(5)) -- 25
🧠 小结
- 使用模块可以将代码拆分为独立文件
require("模块名")导入模块- 模块内部通常使用表
M保存函数,并return M - 通过包路径
package.path管理模块搜索位置 - 模块可以嵌套或直接返回函数,实现灵活封装
相关内容
- Lua 高级技巧与优化 学习 Lua 的高级编程技巧,包括性能优化、内存管理、闭包、尾递归优化和元表高级用法。
- Lua 与 C 的交互 学习如何在 Lua 中调用 C 函数、在 C 中嵌入 Lua,实现 Lua 与 C 的混合编程。
- 流程控制 学习 Lua 中的条件判断、循环语句与控制关键字的用法,包括 if、while、for 与 repeat until。
- Lua 协程(Coroutine) 学习 Lua 协程的基本概念、创建方法、调度与应用,实现轻量级多任务和协作式并发。
- 函数 学习 Lua 中函数的定义与调用方式,掌握参数传递、返回值、可变参数与匿名函数等概念。
- Lua 简介 了解 Lua 的起源、设计理念及应用场景,掌握 Lua 语言的核心特征与优势。