您的位置:首页 > 编程语言 > Lua

Lua封装复制Table并不关联

2015-11-29 17:51 447 查看
Lua中Table直接赋值会进行地址传递,关联两个Table,一个改变另外一个也改变

local tableOld = {1,3}
local tableNew = tableOld
tableNew[1] = 10
print(tableOld[1])


返回值是10,TableOld随着TableNew的改变而改变

下面的函数是为了返回一个与传入参数数值一样但不会改变原参数的Table

function CopyLuaTable( t )
function copy( t, res )
for k,v in pairs(t) do
if type(v) ~= "table" then
res[k] = v
else
res[k] = {}
copy( v, res[k] )
end
end
end
local res = {}
copy( t, res )
return res
end


EX:

local tableOld = {1,3}
local tableNew = CopyLuaTable(tableOld)
tableNew[1] = 10
print(tableOld[1])


返回值还是1,是两个毫不相关的Table
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息