Lua 奇怪的表格行为

在我的代码中,我将一个变量设置为表格的内容,就像这样:

colorTable = {{255, 255, 255}}
color = colorTable[1]

我的问题是当我编辑 color 的值时,它会改变 colorTable 中的原始值。

所以一开始 colorTable[1][1] 等于 255,但是在我运行以下代码之后:

color[1] = color[1] - 10

colorTable[1][1] 等于 245。 任何帮助都会受到赞赏。

点赞
用户2227834
用户2227834

下面这行代码会创建一个名为 color 的引用,指向 colorTable 中的一个表项:

color = colorTable[1]

我们只是操作了值的引用,这并没有表示我们复制了任何东西。

如果我们尝试以下代码块:

color = {table.unpack(colorTable[1])}

我们调用了构造函数,并用从 colorTable[1](它包含 255, 255, 255)中逐个取出的值来填充它。然后我们拥有了一个新的表,它保存了这些值,并对它们进行算术操作不会影响 colorTable 中的值:

print(colorTable[1][1])

结果:

255

接下来:

color[1] = color[1] - 10

print(colorTable[1][1])

结果:

255
2016-10-01 19:30:52