Created
November 7, 2014 03:02
-
-
Save rangercyh/b1089aa0320c100a80e0 to your computer and use it in GitHub Desktop.
deep copy lua table
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--复制一个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