您的位置:首页 > 编程语言 > Lua

Lua中table的拷贝问题

2015-08-10 17:32 555 查看
这里提供了两种方法。

方法一:

function MainScene:deepCopy(newTble, oldTbl)
if oldTbl == nil then
return
end
for key,value in pairs(oldTbl) do
if type(value) == "table" then
newTble[key] = {}
self:deepCopy(newTble[key], value)
elseif type(value) == "userdata" then
newTble[key] = value
elseif type(value) == "thread" then
newTble[key] = value
else
newTble[key] = value
end
end

end


方法二:

--深度拷贝
function MainScene:deepcopy(object)
local lookup_table = {}
local function _copy(object)
if type(object) ~= "table" then
return object
elseif lookup_table[object] then

return lookup_table[object]
end  -- if
local new_table = {}
lookup_table[object] = new_table

for index, value in pairs(object) do
new_table[_copy(index)] = _copy(value)
end
return setmetatable(new_table, getmetatable(object))
end
return _copy(object)
end


注意:方法二中把被拷贝的table的原表也给了新表。这样相对来说是比较安全的。建议这样做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: