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。

猜你喜欢

转载自blog.csdn.net/u013012420/article/details/102718313