河南省安阳市建设银行网站,拓者设计吧模型免费下载,wordpress怎么插视频,西宁企业做网站Set {}
Set.mt {}--定义普通的表作为元表#xff0c;为了避免命名污染直接放在Set内部
function Set.new(t)local set {}setmetatable(set, Set.mt)--一组相关的表共享一个metatable(通过这个可以描述他们共同的行为)#xff0c;一个表也可以是自身的metatable(描述私有行… Set {}
Set.mt {}--定义普通的表作为元表为了避免命名污染直接放在Set内部
function Set.new(t)local set {}setmetatable(set, Set.mt)--一组相关的表共享一个metatable(通过这个可以描述他们共同的行为)一个表也可以是自身的metatable(描述私有行为)for _, l in ipairs(t) do set[l] true endreturn set
endfunction Set.union(a, b)local res Set.new{}for k in pairs(a) do res[k] true endfor k in pairs(b) do res[k] true endreturn res
endfunction Set.intersection(a, b)local res Set.new{}for k in pairs(a) dores[k] b[k]endreturn res
endfunction Set.tostring(set)local s {local sep for e in pairs(set) dos s .. sep ..esep , endreturn s .. }
endfunction Set.print(s)print(Set.tostring(s))
end
--创建的表有相同的元表
s1 Set.new{10, 20, 30, 50}
s2 Set.new{30, 1}
print(getmetatable(s1))
print(getmetatable(s2))
Set.mt.__add Set.union--给元表设置__add函数
--当Lua试图对两个表进行相加时会检查两个表是否有一个表有metatable,并且检查metatable是否有__add域如果有直接调用元方法计算
s3 s1 s2
Set.print(s3)
Set.mt.__mul Set.intersection
Set.print((s1 s2)*s1) 转载于:https://www.cnblogs.com/zzyoucan/p/4323746.html