从用户的角度来看,一个模块能够通过 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\"codetitle">复制代码 代码如下:
C:\bin\lua\lua\"codetitle">复制代码 代码如下:
C:\bin\lua\lua\a\b.lua
.\a\b.lua
Lua,入门指南,模块
更新日志
- 群星.2008-本色·百代音乐人创作专辑【EMI百代】【WAV+CUE】
- 群星.2001-同步过冬AVCD【环球】【WAV+CUE】
- 群星.2020-同步过冬2020冀待晴空【环球】【WAV+CUE】
- 沈雁.1986-四季(2012梦田复刻版)【白云唱片】【WAV+CUE】
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[FLAC/分轨][257.88MB]
- 《国语老歌 怀旧篇 3CD》[WAV/分轨][1.6GB]
- 班得瑞原装进口《第九张新世纪专辑:微风山谷》1CD[APE/CUE分轨][331MB]
- 陈慧琳.2008-Love.Fighters演唱会3CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 米志宏.1994-HAPPY1994【波丽佳音】【WAV+CUE】
- 潘美辰.2006-最冷的夏天(引进版)【美梦辰真】【WAV+CUE】
- 班得瑞原装进口《第十张新世纪专辑:月光水岸》1CD[APE/CUE分轨][277.2MB]
- 班得瑞原装进口《第十一张新世纪专辑:雾色山脉》1CD[APE/CUE分轨][291.6MB]
- 班得瑞原装进口《第十二张新世纪专辑:翡翠谷》1CD[APE/CUE分轨][307.9MB]
- 高卿尘.2024-情绪商店【Hahahai】【FLAC分轨】
- 王恩喆.2024-黄沙【KOOD】【FLAC分轨】