__add(a, b) --加法
__sub(a, b) --减法
__mul(a, b) --乘法
__div(a, b) --除法
__mod(a, b) --取模
__pow(a, b) --乘幂
__unm(a) --相反数
__concat(a, b) --连接
__len(a) --长度
__eq(a, b) --相等
__lt(a, b) --小于
__le(a, b) --小于等于
__index(a, b) --索引查询
__newindex(a, b, c) --索引更新(PS:不懂的话,后面会有讲)
__call(a, ...) --执行方法调用
__tostring(a) --字符串输出
__metatable --保护元表
--]]
--获取metatable
print(getmetatable(10))
print(getmetatable('aa'))
tbA={}
tbmeta={}
print(getmetatable(tbA))
setmetatable(tbA,tbmeta)
print(getmetatable(tbA))
print(tbmeta)
--创建mt,并在创建新对象的时候创建新table。
Set={}
local mt={}
function Set.new(tbTemp)
local set={}
setmetatable(set,mt)
for _,v in pairs(tbTemp) do
set[v] = true
end
return set
end
set1=Set.new({1,2})
for _,v in pairs(set1) do
print(set1)
end
for _,v in pairs(Set.new({1,2,3,4})) do
print(v)
end