LUA Metamethods

来源:互联网 发布:北京公交线路优化 编辑:程序博客网 时间:2024/06/02 03:32
Set = {}
Set.mt = {}


function Set.new (table)
local retable = {}
setmetatable(retable, Set.mt)
for i, v in ipairs(table) do retable[i] = v end
return retable
end


function Set.mt.__add(ad1,ad2)
local retable = {}
setmetatable(retable, Set.mt)
for i, v in ipairs(ad1) do retable[i] = v end
for i, v in ipairs(ad2) do
retable[table.getn(retable) + 1] = v
end
return retable
end


function Set.mt.__tostring(table)
for i, v in ipairs(table) do
print(v)
end
end




test1 = Set.new({1,2,8,10})
test2 = Set.new({3,4,5})


test3 = test1 + test2


print(test3)




Set.mt.__metatable = "not change"
print(getmetatable(test2))
setmetatable(s1, {})

原创粉丝点击