Skip to content

Instantly share code, notes, and snippets.

@rangercyh
Created November 7, 2014 03:02
Show Gist options
  • Save rangercyh/b1089aa0320c100a80e0 to your computer and use it in GitHub Desktop.
Save rangercyh/b1089aa0320c100a80e0 to your computer and use it in GitHub Desktop.
deep copy lua table
--复制一个table
--org为源table,des为复制出来的新table
function gf_CopyTable(tbOrg)
local tbSaveExitTable = {}
local function _copy(object)
if type(object) ~= "table" then
return object
elseif tbSaveExitTable[object] then --检查是否有循环嵌套的table
return tbSaveExitTable[object]
end
local tbNewTable = {}
tbSaveExitTable[object] = tbNewTable
for index, value in pairs(object) do
tbNewTable[_copy(index)] = _copy(value) --要考虑用table作索引的情况
end
return setmetatable(tbNewTable, getmetatable(object))
end
return _copy(tbOrg)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment