Lua语言学习:Lua 模块与包

模块类似于一个封装库,从 Lua 5.1 开始
更新于: 2022-01-21 05:27:31

模块

模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

我的 lua 版本

❯ lua
Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio

模块

  • 定义
  • 常量/成员
  • 方法(public/private)
  • 导出
# mod1
module = {}

-- 定义一个 module 常量
module.name = "mod1"

-- 定义一个 module 方法
function module.func1(...)
    print('i am func1')
end

-- 内部用的方法
local function func2()
    print('i am a private function')
end

-- 输出模块
return module

require 函数

Lua提供了一个名为 require 的函数用来加载模块。要加载一个模块,只需要简单地调用就可以了

.
├── app.lua
└── mod1.lua

0 directories, 2 files
local m1 = require("mod1")

print(m1.name)
m1.func1()

加载机制

对于自定义的模块,模块文件不是放在哪个文件目录都行,函数 require 有它自己的文件路径加载策略,它会尝试从 Lua 文件或 C 程序库中加载模块。

print(package.path)

参考