lua 的元表和元表的__index字段

众所周知,lua的继承是通过元表的__index字段来实现的,比如child类要继承自parent类,就需要把child的元表设为parent,并且要把child的元表(此时是parent)的__index字段进行设置才行。这里的设置可是是一个table,此table是任意的,不一定是父类,还可以设置为一个function。只有设置了元表的__index字段后,才是真正实现了继承,也就是在child中找不到属性或者方法,lua会从child的元表中去查找。

例子:

--例子1.只设置了元表,但是没有设置元表的__index字段
local parent = {}
parent.helloWorld = "hello World"
local child = {}
setmetatable(child, parent)
print(child.helloWorld)

 

如果加上了设置元表的__index字段,会实现了继承了:

直接看例子2:

--例子2.设置了元表,并且设置元表的__index字段
local parent = {}
parent.helloWorld = "hello World"
parent.__index = parent --设置__index字段
local child = {}
setmetatable(child, parent)
print(child.helloWorld)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值