Lua从5.1开始加入了标准的模块管理机制,可以把一些公用代码放在一个文件里,以API接口的形式在其他地方调用。
创建包
-- 文件名 module.lua-- 定义一个名为module的模块module = {}-- 定义一个常量module.constant = "这是一个常量"-- 定义一个函数function module.fun1()print("这是一个公共函数")endlocal function func2()print("这是一个私有函数")endfunction module.func3()func2()endreturn 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
