Lua奇表行为

时间:2016-10-01 18:21:51

标签: list indexing lua

在我的代码中,我将一个变量设置为表的内容,如下所示:

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

我的问题是当我修改color的值时,它会更改colorTable

中的原始值

所以在开始时,colorTable[1][1]等于255,但在我运行之后:

color[1] = color[1] - 10

colorTable[1][1]等于245。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:5)

以下行color内的表格中创建引用(colorTable):

color = colorTable[1]

我们只是操纵对值的引用,这并不表示任何复制方法。

如果我们改为尝试以下方法:

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

我们正在调用构造函数,并使用colorTable[1]中包含255, 255, 255的值解压缩填充它。然后,我们有一个包含这些值的 new 表,对它们执行算术不会影响colorTable中的值:

print(colorTable[1][1])

结果:

255

随后:

color[1] = color[1] - 10

print(colorTable[1][1])

结果:

255