Lua从5.1开始加入了标准的模块管理机制,可以把一些公用代码放在一个文件里,以API接口的形式在其他地方调用。
创建包
-- 文件名 module.lua
-- 定义一个名为module的模块
module = {}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个函数
function module.fun1()
print("这是一个公共函数")
end
local function func2()
print("这是一个私有函数")
end
function module.func3()
func2()
end
return module
引入/使用包
使用require来引入、加载包require "模块名"
require "module"
print(module.constant)
module.fun3()
-- 给包名定义别名
local m = require "module"
print(m.constant)
包的载入机制
require 用于搜索 Lua 文件的路径是存放在全局变量 package.path 中,当 Lua 启动后,会以环境变量 LUA_PATH 的值来初始这个环境变量。如果没有找到该环境变量,则使用一个编译时定义的默认路径来初始化。
当然,如果没有 LUA_PATH 这个环境变量,也可以自定义设置,在当前用户根目录下打开 .profile 文件(没有则创建,打开 .bashrc 文件也可以),例如把 “~/lua/“ 路径加入 LUA_PATH 环境变量里:
$ export LUA_PATH="/usr/local/lua/module/?.lua;;"
$ source ~/.bashrc
文件路径以 “;” 号分隔,最后的 2 个 “;;” 表示新加的路径后面加上原来的默认路径。
假设LUA_PATH的值为:/usr/local/lua/module/?.lua;./?.lua
此时Lua查找包的顺序为:
/usr/local/lua/module/module.lua
./module.lua