我正在写一个lua脚本,它所做的一件事是将一张表复制到一张表中,并对其应用一些转换。奇怪的是,当我稍后使用这些表格中的一个(并修改它的一些属性)时,更改似乎也会显示在其他表格中!代码:更改一个表似乎改变了另一个
-- thanks to http://stackoverflow.com/questions/1283388/lua-merge-tables/1283608#1283608
-- tableMerge:
-- merges two tables, with the data in table 2 overwriting the data in table 1
function tableMerge(t1, t2)
for k,v in pairs(t2) do
if type(v) == "table" then
if type(t1[k] or false) == "table" then
tableMerge(t1[k] or {}, t2[k] or {})
else
t1[k] = v
end
else
t1[k] = v
end
end
return t1
end
--tableCopy:
--takes a table and returns a complete copy including subtables.
function tableCopy(t)
return tableMerge({}, t)
end
local t1 = { a = 1, b = true, c = "d", e = { f = 2 } }
local t2 = tableCopy(t1)
t2.b = false
t2.e.f = 1
print(t1.b) -- prints true as it should
print(t1.e.f) -- prints 1!
[去除它包含的信息,原因等代码,而这种错误的一个很好的再现]
因此,它是在我的代码或什么错误?我无法弄清楚......
好的,说实话,我在发布答案之前并没有看太多你的代码。对此有罪。但是,我仍然不想深入其中,所以如果您可以编写一小段代码来重现问题,或者至少指出哪些表意外更改,您可能会得到更好的答案。 – sbk 2009-09-09 11:15:23
好的,我会继续前进,并在问题的具体内容上添加一些内容。 – RCIX 2009-09-09 11:34:18