嗯,最近做了很多的重复工作,这里记录一下自己的重复且很有可能会继续重复的深拷贝,深拷贝的坑是刚接触lua的萌新最容易接触的深渊巨坑( ̄▽ ̄)"。
不多bb,看代码
-- table的深度拷贝
deepcopy = function(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
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