--深度拷貝table注意如果裡面有字段是指向自己的,需要單獨拿出,不然會死迴圈function deepcopy(obj)
local intable ={};
local function func(obj)
if type(obj) ~= "
table
" then --判斷表中是否有表
return
obj;
endlocal newtable = {}; --定義乙個新錶
intable[obj] = newtable; --若表中有表,則先把表給intable,再用newtable去接收內嵌的表
for k,v in pairs(obj) do --把舊表的key和value賦給新錶
newtable[func(k)] =func(v);
endreturn setmetatable(newtable, getmetatable(obj))--賦值元表
endreturn func(obj) --若表中有表,則把內嵌的表也複製了
end
Lua對table進行深拷貝
有時候,在開發當中,想對乙個table進行相關的操作,但是操作完之後能夠不對原本的table產生修改,這時候就需要對table進行乙個拷貝,然後使用這個拷貝的table進行相關的操作。直接對table進行等號賦值,那是不行的,這樣拿到的還是原本table的引用,修改時會把原本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中的table函式庫
一部分的table函式只對其陣列部分產生影響,而另一部分則對整個table均產生影響.下面會分開說明.table.concat table,sep,start,end concat是concatenate 連鎖,連線 的縮寫.table.concat 函式列出引數中指定table的陣列部分從star...