淘先锋技术网

首页 1 2 3 4 5 6 7

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 new_table = {}

        lookup_table[object] = new_table

        for key, value in pairs(object) do

            new_table[_copy(key)] = _copy(value)

        end

        return setmetatable(new_table, getmetatable(object))

    end

    return _copy(object)

end