Lua程序设计(三十二)
搜索器
一个搜索器是一个以模块名为参数,以对应模块的加载器或 nil (如果找不到加载器)为返回值的的简单函数。
数组package.searchers 列出了函数require使用的所有搜索器。在寻找模块时,函数require传入模块名并调用列表中的每一个搜索器直到它们其中的一个找到了指定模块的加载器。如果所有搜索器都被调用完后还找不到,那么函数require就抛出一个异常。
预加载( preload )搜索器使得我们能够为要加载的模块定义任意的加载函数。预加载搜索器使用一个名为package.preload的表来映射模块名称和加载函数。当搜索指定的模块名时,该搜索器只是简单地在表中搜索指定的名称。如果它找到了对应的函数,那么就将该函数作为相应的模块的加载函数返回;否则,返回nil.
Lua语言中编写模块的基本方法
在Lua语言中创建模块的最简单方法是,创建一个表并将所有需要导出的函数放入其中,最后返回这个表。
local M = {}
local function new(r, i)
return {r = r, i = i}
end
M.i = new (0, 1)
function M.add(c1, c2)
return new(c1.r + c2.r, c1.i + c2.i)
end
function M.sub(c1, c2)
return new(c1.r - c2.r, c1.i - c2.i)
end