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