function DeepCopy( obj )
local InTable = {};
local function Func(obj)
if type(obj) ~= "table" then --判断表中是否有表
return obj;
end
local NewTable = {}; --定义一个新表
InTable[obj] = NewTable; --若表中有表,则先把表给InTable,再用NewTable去接收内嵌的表
for k,v in pairs(obj) do --把旧表的key和Value赋给新表
NewTable[Func(k)] = Func(v);
end
return setmetatable(NewTable, getmetatable(obj))--赋值元表
end
return Func(obj) --若表中有表,则把内嵌的表也复制了
end
t1 = {a='a','s','d','f','g','h'}
t2 = DeepCopy(t1); --深拷贝
t3 = t1; --浅拷贝
print(t1)
print(t2)
print(t3)
for i,v in pairs(t2) do
print(i,v);
end
LUA 中实现table表的深拷贝实例
最新推荐文章于 2025-01-27 00:00:00 发布