为什么我不能制作单独的表副本?

时间:2014-05-28 00:16:58

标签: class inheritance lua lua-table

在文件中我做了这样的代码:

Source = {}
Source[1] = { a = 1, b = 2, ... }

在另一个文件中,我会做下一个:

Table = {}
Table[1] = Source[1]
Table[2] = Source[1]

我使用此方法在Lua中创建对象。但是,它们并不是单独行动的,例如,我不能为这两个表赋予不同的a值。

为什么呢?另外,我能做些什么呢?我想避免逐个定义表。

1 个答案:

答案 0 :(得分:2)

原因是变量Table[1]Table[2]只是对同一个表值的引用,它们不包含值。

要按值复制表格,请逐个复制值:

for k, v in pairs(Source[1]) do
    Table[1][k]  = v
    Table[2][k]  = v
end

有关复制表格的更多信息,请参阅How do you copy a Lua table by value?