Lua 深复制 clone函数

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 深复制 clone函数)