时间:2021-05-22
从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标准库被预先加载了,就像这样:
复制代码 代码如下:
math = require 'math'
string = require 'string'
require 函数
使用 require 函数加载模块能够避免多次重复加载模块。加载一个模块:
复制代码 代码如下:
require 'modulename'
模块名(modulename)不那么准确的来说就是一个文件名(Lua 文件或者是 C 库)。一个模块被加载后会被缓存到 pacakge.loaded[modulename] 中。看一个例子:
复制代码 代码如下:
-- test.lua
print 'Hello World'
在 test.lua 的相同目录下创建 main.lua 文件:
复制代码 代码如下:
-- main.lua
require 'test'
我们可以尝试多次 require test.lua 文件,但最终只会输出一次 Hello World。如果我们希望 require 重新加载模块,那么可以清理 package.loaded:
复制代码 代码如下:
package.loaded[modulename] = nil
范例:
复制代码 代码如下:
require 'test' --> Hello World
package.loaded.test = nil
require 'test' --> Hello World
编写模块
编写一个模块很简单,我们先创建一个 table 然后把需要导出的接口放入 table 中,最后返回此 table:
复制代码 代码如下:
-- test.lua
local exports = {}
function exports.foo()
print 'Hello World'
end
return exports
模块的返回值会被赋值给 package.loaded[modulename]:
复制代码 代码如下:
assert(require 'test' == package.loaded.test)
如果模块不返回值,那么 package.loaded[modulename] 的值将为 true:
复制代码 代码如下:
-- 假定 test.lua 是一个空文件
local t = require 'test'
print(t) --> true
print(package.loaded.test) --> true
更多的编写模块的方法见:http://lua-users.org/wiki/ModulesTutorial
查找模块
如果一个模块使用 Lua 编写,那么将在 package.path 中查找,如果一个模块使用 C 编写,那么将在 package.cpath 中查找。package.path 和 package.cpath 是一个分号分隔的路径列表,例如:
复制代码 代码如下:
C:\bin\lua\lua\?.lua;C:\bin\lua\lua\?\init.lua;C:\bin\lua\?.lua;C:\bin\lua\?\init.lua;.\?.lua
每一个路径都有一个 ?,真正的查找路径是将 ? 替换为模块名之后的路径。
实际上,我们可以自定义查找模块的规则(通过向 package.searchers 中添加适当的 searcher 函数实现),例如我们可以把所有模块保存在一个加密并压缩的 zip 文件中。
一个模块命名为 mod.sub,其是 mod 的子模块。在查找模块时,mod.sub 中的 . 号会被转换为目录分隔符。假定路径列表如下:
复制代码 代码如下:
C:\bin\lua\lua\?.lua;.\?.lua
那么 require ‘a.b' 将尝试打开文件:
复制代码 代码如下:
C:\bin\lua\lua\a\b.lua
.\a\b.lua
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
极简不止muji,还有很多好看的极简风格。这二十款极简型的网页设计,你们有心仪的吗?
(极简汇率App页面)金融业务系统模块化升级提供代替银行柜台的个人终端服务(极简汇率全球用户使用分布图)与三星合作开发AI语音查询实时汇率基于对跨境汇兑用户的洞
极简主义的运用。极简主义在早几年就流行起来了,但是在网页设计方面极简主义的影响力在近几年才逐渐大了起来。极简主义风格的网站设计,运行速度快,用户体验效果更好,接
疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器。这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以随机播放歌曲,获取下
网站建设咱们常常说极简主义,日子中也存在一些极客,那末极简主义是什么呢?是统统都追求最大略的水平而不在乎细节吗?固然不是,极简主义作为一种追求精约但不大略的日子