同步操作将从 fulinux/lua 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/luaSet = {}local mt = {} -- 集合的元表-- 根据参数列表中的值创建一个新的集合function Set.new(l)local set = {}setmetatable(set, mt)for _, v in pairs(l) do set[v] = true endreturn setend-- 并集操作function Set.union(a, b)if getmetatable(a) ~= mt or getmetatable(b) ~= mt thenerror("metatable error.")endlocal retSet = Set.new{} -- 此处相当于Set.new({})for v in pairs(a) do retSet[v] = true endfor v in pairs(b) do retSet[v] = true endreturn retSetend-- 交集操作function Set.intersection(a, b)local retSet = Set.new{}for v in pairs(a) do retSet[v] = b[v] endreturn retSetend-- 打印集合的操作function Set.toString(set)local tb = {}for e in pairs(set) dotb[#tb + 1] = eendreturn "{" .. table.concat(tb, ", ") .. "}"endfunction Set.print(s)print(Set.toString(s))endlocal 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.unionlocal set1 = Set.new({10, 20, 30})local set2 = Set.new({1, 2})local set3 = set1 + set2Set.print(set3)mt.__tostring = Set.toStringprint(set3)dofunction Set.new(l)local set = {}setmetatable(set, mt)for _, v in pairs(l) do set[v] = true endmt.__metatable = "You cannot get the metatable" -- 设置完我的元表以后,不让其他人再设置return setendlocal tb = Set.new({1, 2})print(tb)print(getmetatable(tb))setmetatable(tb, {})end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。