元表(Matetable)
概念:元表是用来定义table或者userdata操作方式的表
设置元表:
table={}
metatable={}
setmetatable(table,metatable):将metatable作为table的元表,返回值为table
元表必须在设置之前完成,后面再修改元表的话,必须再次使用setmatatable才能完成
获取原表
getmetatable(表):返回元表
出来上面定义元表的方法以外还可以
table=setmetatable({1,2,3},{})
metatable=getmetatable(table)
元表常用键
一.__index:在查找键时,没有找到对应键时会调用此键(注意前面是两个下划线)
赋值方式有两种:
一.函数
__index=function(表名,键,值)
return 返回值
end
二.表
table={}
table[n]=" "
__index=table:会在table里面找,找到了就返回,没有找到对应键的值就返回nil
总结
Lua 查找一个表元素时的规则,其实就是如下 3 个步骤:
1.在表中查找,如果找到,返回该元素,找不到则继续