#Lua 的 require 函数
require (modname)
说明
加载指定模块。
首先检查 package.loaded
,判断模块是否已经被加载:
- 如果已经被加载,则返回
package.loaded[modname]
保存的值 - 否则,尝试查找该模块的 加载器
该函数根据数组 package.searchers
里的 查找器函数 依次查找加载器:
- 第一个查找器尝试从
package.preload
中查找package.preload[modname]
- 第二个查找器尝试从
package.path
中查找 Lua 库形式的加载器 - 第三个查找器尝试从
package.cpath
中查找 C 库形式的加载器require("mylibs")
尝试加载mylibs.so
中的luaopen_mylibs
函数
- 第四个查找器尝试使用一体化加载器(多个子模块集成在一个 C 库中):从
package.cpath
中查找 C 库形式的加载器require("mylibs.xx")
尝试加载mylibs.so
中的luaopen_mylibs_xx
函数require("mylibs.yy")
尝试加载mylibs.so
中的luaopen_mylibs_yy
函数require("mylibs.zz")
尝试加载mylibs.so
中的luaopen_mylibs_zz
函数
参数
modname
- 要加载的模块名
返回值
- 返回模块的返回值
#示例
print("预加载:")
for k, v in pairs(package.preload) do
print(k, v)
end
print("\nLua 库:", package.path)
print("\nC 库:", package.cpath)