Lua對table進行深拷貝

有時候,在開發當中,想對一個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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章