有時候,在開發當中,想對一個table進行相關的操作,但是操作完之後能夠不對原本的table產生修改,這時候就需要對table進行一個拷貝,然後使用這個拷貝的table進行相關的操作。
直接對table進行等號賦值,那是不行的,這樣拿到的還是原本table的引用,修改時會把原本table的值一起修改:
所以這時候就需要對table進行深拷貝
function DeepCopy(tmp)
if nil == tmp then return nil end
local res = {}
for key, val in pairs(tmp) do
if type(val) == "table" then
res[key] = DeepCopy(val)
else
res[key] = v
end
end
return res
end
local a = { }
a.num = 1
local b = DeepCopy(a)
b.num = 3
print(a.num)
這樣得到的結果就是1了,拷貝後修改的值不影響原本的table。