1. 程式人生 > >Lua table 拷貝而不是引用的解決方法

Lua table 拷貝而不是引用的解決方法

Lua中table 直接賦值會進行地址傳遞,關聯兩個table,一個改變了另一個也會改變,如下:

為了解決這種問題,我們用以下實現:

function clone(org)
    local function copy(org, res)
        for k,v in pairs(org) do
            if type(v) ~= "table" then
                res[k] = v;
            else
                res[k] = {};
                copy(v, res[k])
            end
        end
    end

    local res = {}
    copy(org, res)
    return res
end

驗證如下:

這樣改變t2後,t1並不會受影響