|
发表于 2012-2-20 20:10:06
|
显示全部楼层
本帖最后由 littleknife 于 2012-2-20 08:12 PM 编辑
其实对于表的合并和求交集,不需要用到元表也能做到:
求并集:
-
- local function checkvalue(value,t)
- if value==nil then return false end
- local res=false
- for k,v in pairs(t) do
- if v==value then
- res=true
- break
- end
- end
- return res
- end
复制代码- function table_union(a,b)
- local res={}
- if a==nil or a==b then
- return b
- end
- if b==nil then
- return a
- end
- for k,v in pairs(a) do table.insert(res,v) end
- for _,value in pairs(b) do
- if checkvalue(value,a)==false then
- table.insert(res,value)
- end
- end
- return res
- end
复制代码
求交集:
- function table_intersection (a,b)
- local res={}
- if a==nil then
- return b
- end
- if b==nil then
- return a
- end
- for _,r in ipairs(a) do
- for _,t in ipairs(b) do
- if r==t then
- table.insert(result,r)
- break
- end
- end
- end
- if res==nil then
- print(":交集为空:")
- res={}
- end
- return res
- end
复制代码 |
|