Lua中table 直接赋值会进行地址传递,关联两个table,一个改变了另一个也会改变,如下:
为了解决这种问题,我们用以下实现:
function clone(org)
local function copy(org, res)
for k,v in pairs(org) do
if type(v) ~= "table" then
res[k] = v;
else
res[k] = {};
copy(v, res[k])
end
end
end
local res = {}
copy(org, res)
return res
end
验证如下:
这样改变t2后,t1并不会受影响