首页
看点啥
插画图片
首页 科技看点 Lua中使用模块的一些基础知识实用指南

Lua中使用模块的一些基础知识实用指南

2026-09-03 0

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Lua中采用模块的一些基础知识”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

从实现思路看,--两个横线开始单行的注释,--[[加上两个[和]表示多行的注释--]]。

复制代码 代码如下所示:
-- 假设文件mod.lua的内容是:
local M = {}

local function sayMyName()
print('Hrunkner')
end

function M.sayHello()
print('Why hello there')
sayMyName()
end

return M

复制代码 代码如下所示:
-- 另一个文件也能够采用mod.lua的函数:
local mod = require('mod') -- 运行文件mod.lua.

-- require是包含模块的标准做法。
-- require等价于: (针对没有被缓存的情况;参加后面的内容)
local mod = (function ()

end)()
理解这一步时,-- mod.lua就好像一个函数体,所以mod.lua的局部变量对外是不可见的。

复制代码 代码如下所示:
-- 下面的代码是工作的,因为在mod.lua中mod = M:
mod.sayHello() -- Says hello to Hrunkner.

复制代码 代码如下所示:
-- 这是错误的;sayMyName只在mod.lua中存在:
mod.sayMyName() -- 错误

复制代码 代码如下所示:
-- require得到的值会被缓存,所以一个文件只会被运行一次,
-- 即使它被require了多次。

-- 假设mod2.lua包含代码"print('Hi!')"。
local a = require('mod2') -- 打印Hi!
local b = require('mod2') -- 不再打印; a=b.

-- dofile与require类似,只是不做缓存:
dofile('mod2') --> Hi!
在这个场景下,dofile('mod2') --> Hi! (再次运行,与require不同)

复制代码 代码如下所示:
-- loadfile加载一个lua文件,但是同时不允许它。
f = loadfile('mod2') -- Calling f() runs mod2.lua.

复制代码 代码如下所示:
-- loadstring是loadfile的字符串版本。
落到代码里,g = loadstring('print(343)') --得到一个函数。
g() -- 打印343; 在此之前什么也不打印。

您可能感兴趣的文章:
  • Lua教程(十一):模块与包详解
  • Lua模块与包学习笔记
  • Lua中的模块(module)和包(package)详解
  • Lua的函数环境、包实例讲解
  • Lua调用自定义C模块
  • 采用Lua编写Nginx服务器的认证模块的方法
  • 在Lua中采用模块的基础教程
  • Lua极简入门指南(六):模块
  • Lua模块和模块载入浅析
  • Lua中的模块与module函数详解
  • 解析Lua中的全局环境、包、模块组织结构
喜欢(0)

上一篇

战双帕弥什露西亚·誓焰特效涂装光耀颂赞获取做法

战双帕弥什露西亚·誓焰特效涂装光耀颂赞获取做法

下一篇

完整指南SQLServer 2008 R2数据库SSAS建模及扩展能力

猜你喜欢