我正在寫一個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