Lua中使用模块的一些基础知识实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“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 ()
<contents of mod.lua>
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中的全局环境、包、模块组织结构
-
09.04
Alice in Wonderland White Rabbit Chase
-
09.04
Qwen Image Model Review Banner
-
09.04
如何通过办公自动化提升工作效率和应对挑战怎么做-步骤任务条件
-
09.04
Emergent_AI如何修复生成应用中的问题
-
09.04
掌握Excel的基本实用用法,提升数据管理能力讲了什么-主要信息和内容重点
-
09.04
Gamma_AI生成PPT技巧
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏