lua元表实现原理读后感

这篇博客介绍了Lua虚拟机中通过表查询数据的过程,包括使用__index元方法进行多层查找。文章探讨了两种面向对象的实现方式:一种是将__index指向基类,适合单层继承,但查找可能较慢;另一种是实例化时深拷贝基类成员,提高查找效率但增加初始化开销。这两种方法各有优缺点,适用于不同的场景。
摘要由CSDN通过智能技术生成

lua虚拟机从一个表中查询数据的过程:

如果查询对象是表,则尝试根据key在表中查询数据,若有则返回结果;若结果为空,且无__index成员,则返回空结果;若结果为空且有__index,则设查询对象为__index,进行下一层深度的查找;
若查询对象不是表,则尝试获取对象的metatale["__index"](usedata可能有此成员),设为查询对象并进行下一层深度的查找;
逐层深度向下查找,但有层数限制,超过则终止查找。
由这条特性,我们可以用lua表来实现面向对象,最简单的是将__index指向基类,另一种方法是在实例化对象时直接将基类的成员深拷贝给子类。两种不同方法的差别显而易见:前者不宜多层继承,否则查找成员时一层层找增加额外开销;后者提高了查找效率,但在实例化时会有额外的开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值