有時候,在開發當中,想對乙個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
endend
return res
endlocal a =
a.num = 1
local b = deepcopy(a)
b.num = 3
print(a.num)
這樣得到的結果就是1了,拷貝後修改的值不影響原本的table。 LUA 中實現table表的深拷貝例項
function deepcopy obj local intable local function func obj if type obj table then 判斷表中是否有表 return obj endlocal newtable 定義乙個新錶 intable obj newtable 若...
Lua的淺拷貝和深拷貝
在lua中,使用 進行淺拷貝,根據拷貝物件的不同,又分為兩種情況 1.拷貝物件為string number boolean等基礎型別時,拷貝的過程是進行複製貼上。建立乙個新的物件,拷貝出來的新物件和原來的物件互不影響,互不干涉,所以修改拷貝出來的物件的值不會影響到原來的物件的值!local valu...
Lua中對table排序例項
這篇文章主要介紹了lua中對table排序例項,本文講解了lua中對table的一般排序方法 針對值的排序 同時對鍵值進行排序等方法,需要的朋友可以參考下 lua中利用到的排序的基本上就是建構函式 table 了,為了便於和c區分開來,我俗稱它為表單。例項 原理就是lua整合的冒泡演算法 排序的一般...