lua中的深复制, 一般表的复制都是引用,如果要实现完全的复制 就需要实现: 1,值的复制 2方法的复制
clone实现如下:
function clone(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 newObject = {}
lookup_table[object] = newObject
for key, value in pairs(object) do
newObject[_copy(key)] = _copy(value)
end
return setmetatable(newObject, getmetatable(object))
end
return _copy(object)
end
本文介绍了一种在Lua中实现深复制的方法。通过递归遍历表,并为每个表创建一个新的副本,确保原始表与复制后的表完全独立。该实现考虑了值的复制以及方法的复制。

3378

被折叠的 条评论
为什么被折叠?



