using "UnityEngine"
Set={}
local mt={}
function Set.new(l)--在Set表中定义一个方法new
local set ={}
setmetatable(set,mt)
for _,v in pairs(l) do
set[v]=true
end
end
function Det.union(a,b)
local retSet = Set.new{}
for v in pairs(a) do retSet[v]=true end
for v in pairs(b) do retSet[v]=true end
return retSet
end
function Set.intersection(a,b)
local retSet = Set.new{}
for v in pairs(a) do retSet[v]=b[v] end
return retSet
end
function Set.toString(set)
local tb = {}
for e in pairs(set) do
tb[
end
return "{"..table.concat(tb,",").."}"
end
function Set.print( s )
print(Set.toString(s))
Debug.Log(Set.toString(s))
end
collectgarbage()
Set={}
local mt={}
function Set,new( l )
local set = {}
setmetatable(set,mt)
for _,v in pairs(l) do set[v]=true end
return set
end
local set1 = Set.new({10,20,30})
local set2=Set.new({1,2})
print(getmetatable(set1))
print(getmetatable(set2))
assert(getmetatable(set1)==getmetatable(set2))
mt.__add = Set.union
local set1 = Set.new({10, 20, 30})
local set2 = Set.new({1, 2})
local set3 = set1 + set2
Set.print(set3)
Windows = {}
Windows.default = {x = 0, y = 0, width = 100, height = 100, color = {r = 255, g = 255, b = 255}}
Windows.mt = {}
function Windows.new(o)
setmetatable(o, Windows.mt)
return o
end
Windows.mt.__index = function (table, key)
return Windows.default[key]
end
local win = Windows.new({x = 10, y = 10})
print(win.x)
print(win.width)
print(win.color.r)