Lua 接口说明书 · 996引擎LUA API REFERENCE · 5.1/5.3

模块与包

PACKAGE

模块机制:require 路径、缓存、预载 | 本页 7 个接口。登录全站学员账号后:给函数打 ✓ 记录学习进度、写私人备注。

package.cpath
📖 用途

require 搜索 C 扩展模块(.dll/.so)的路径模板串。

📥 参数

无参数

📤 返回值

路径模板串(string)

💻 用法案例
print(package.cpath)
package.loaded
📖 用途

记录已加载模块的表:require 先查这里,命中直接返回(这就是“模块只加载一次”的实现)。强行置 nil 可强制重载。

📥 参数

无参数

📤 返回值

模块缓存表

💻 用法案例
print(package.loaded.string ~= nil)   --> true
package.loaded.MyLib = nil   -- 下次 require 重新加载
package.loaders
📖 用途

require 的查找器列表(5.1 叫 loaders,5.2+ 改名 searchers):依次尝试,找到就加载。

📥 参数

无参数

📤 返回值

查找器数组

💻 用法案例
for i, loader in ipairs(package.loaders) do print(i, loader) end
package.loadlib (libname, funcname)
📖 用途

加载 C 库并取其中的函数(底层接口,一般用 require 即可)。

📥 参数
参数说明
libname动态库完整路径
funcname导出的打开函数名(如 luaopen_xxx)
📤 返回值

函数(失败 nil)

💻 用法案例
-- local open = package.loadlib('./x.dll', 'luaopen_x')
package.path
📖 用途

require 搜索 Lua 脚本模块的路径模板串,; 分隔,? 代表模块名。

📥 参数

无参数

📤 返回值

路径模板串(string)

💻 用法案例
print(package.path)
-- 形如 .\?.lua;C:\lua\?.lua
package.preload
📖 用途

预登记模块加载函数的表:preload[名字] = 函数 后,require 该名字时直接调用此函数获得模块(不用找文件)。适合把多个模块打进一个文件。

📥 参数

无参数

📤 返回值

预载表

💻 用法案例
package.preload['hello'] = function() return {hi = function() print('hi') end} end
require('hello').hi()
package.seeall (module)
📖 用途

给模块表设元表使其能访问 _G(解决 module() 旧模块里访问不到全局的问题)。配合 module() 使用,新写法不需要。

📥 参数
参数说明
module模块表
📤 返回值

💻 用法案例
-- module('M', package.seeall)   -- 旧式模块声明时用
Lua 接口说明书 · 996引擎教学资料 · chuan2.cn · 共 136 个接口
📝 我的备注-
👤 学员中心 · 备注与学习进度