为什么我不能制作分离的表副本?

在一个文件中,我写了这样的代码:

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

在另一个文件中,我写了下面的代码:

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

我使用这种方法来创建 Lua 对象。但是,它们不会分别运作,例如,我不能为这两个表给出不同的 a 值。

为什么?我该怎么办?我想避免逐一定义表。

点赞
用户1009479
用户1009479

原因是变量 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?

2014-05-28 01:03:53