模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。 Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。以下为创建自定义模块 module.lua,文件代码格式如下:
  1. -- 文件名为 module.lua
  2. -- 定义一个名为 module 的模块
  3. module = {}
  4. -- 定义一个常量
  5. module.constant = "这是一个常量"
  6. -- 定义一个函数
  7. function module.func1()
  8. io.write("这是一个公有函数!\n")
  9. end
  10. local function func2()
  11. print("这是一个私有函数!")
  12. end
  13. function module.func3()
  14. func2()
  15. end
  16. return module

加载机制

对于自定义的模块,模块文件不是放在哪个文件目录都行,函数 require 有它自己的文件路径加载策略,它会尝试从 Lua 文件或 C 程序库中加载模块。 require 用于搜索 Lua 文件的路径是存放在全局变量 package.path 中,当 Lua 启动后,会以环境变量 LUA_PATH 的值来初始这个环境变量。如果没有找到该环境变量,则使用一个编译时定义的默认路径来初始化。 当然,如果没有 LUA_PATH 这个环境变量,也可以自定义设置,在当前用户根目录下打开 .profile 文件(没有则创建,打开 .bashrc 文件也可以),例如把 “~/lua/“ 路径加入 LUA_PATH 环境变量里:
  1. require("module")
  2. module.func3()
  3. local r=require("module")
  4. r.func3()
自动化平台 官方网站 交流学习 学习课程 公开课程
懒人精灵 懒人精灵官网 正在跳转 562451816 💻进阶课程列表 官方课合集
AiWork AIWork官网 正在跳转 818641934 📗中级课程 官方课合集
EasyClick EasyClick官网 正在跳转 815053746
小派精灵 小派精灵官网 正在跳转 429533660
按键精灵 按键精灵官网 正在跳转 815057794
易语言 易语言官网
何鑫云机 合鑫云手机-云真机
鸟人云机 鸟人云手注册 鸟人云机下载 安卓7.1~10系统