Lua程序设计(三十二)

这篇博客探讨了Lua中的搜索器概念,它是函数require寻找模块加载器的机制。预加载搜索器允许通过package.preload表定义自定义加载函数。此外,介绍了两种在Lua中编写模块的基本方法,一种是直接创建包含导出函数的表,另一种是先定义局部变量,再构造导出表。这两种方式各有优缺点。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值