Lua元表

Lua元表就相当于给一个table外接一个表,当想要找一个元素的时候,如果Lua从自身的表中没有找到该元素的话就会从外接的元表中去找,如果找到该元素就会通过__index来返回,如果找的过程中有方法的话,就会调用该方法,等到方法完成之后再继续找;如果自身表以及元表中都没有该元素,那么就返回nil

对指定的表设置元表:
mytable={}
mymetatatable={}
–使用setmetatable关键字对表创建一个元表:setmetatable(自身表,外接的表)
setmetatable(mytable,mymetatable)
也可简写:
mytable=setmetatable({},{})
返回对象的元表
–返回mytable的元表
getmetatable(mytable)

__index元方法

这是元表中最常用的键,当我门通过__index来访问表的时候,如果该表中没有我们想要的元素,那么它就会从该表的元表中查找,如果查找的过程中__index指向一个方法,那么就会执行该方法,如果__index指向的是某个表,就会从该表中查找这个元素;找到了就返回该元素,否则返回nil
例子:

mytable={["keyOne"]=1}

function myFunc(tmpKey)
	if (tmpKey=="keyThree") then
		print("asdfadf")
		return keyThree
	end
end

tmptable={["keyTwo"]=2,"abcd",myFunc()
}

setmetatable(mytable,{__index=tmptable})
print(mytable["keyTwo"])

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值