牛横的元表
1、childtable=setmetatable({},{
A :__index=function(childtable,key)
end
B:__index={xkey=6}
以上两种当访问子表不存在的键时,会到元表中查找__index,如果不存在返回nil
C:__newindex=function(childtable,k,v)
rawset(childtable,k,v);--可以利用这个特性,当给表赋值时,进行校验之类操作
end
D:__newindex={}
以上两种情况,当给子表赋予不存在的键值时,会去原表中找__newindex
E:运算符
__add(childtable,newtable)--当childtable+newtable时调用
F:__call(childtable,newtable)--当childtable(newtable)时,调用
G:__tostring(mytable)--当print(childtable)
mytable = setmetatable({ 10, 20, 30 }, {
__tostring = function(mytable)
sum = 0
for k, v in pairs(mytable) do
sum = sum + v
end
return "表所有元素的和为 " .. sum
end
})
print(mytable)
});