Lua奇表行为

Ark*_*orf -3 indexing lua list

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

colorTable = {{255, 255, 255}}
color = colorTable[1]
Run Code Online (Sandbox Code Playgroud)

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

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

color[1] = color[1] - 10
Run Code Online (Sandbox Code Playgroud)

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

Unh*_*lig 5

以下行在表中创建一个reference(color)colorTable:

color = colorTable[1]
Run Code Online (Sandbox Code Playgroud)

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

相反,如果我们尝试以下方法:

color = {table.unpack(colorTable[1])}
Run Code Online (Sandbox Code Playgroud)

我们正在调用构造函数,用从中解压缩的值填充它colorTable[1],其中包含255, 255, 255.然后我们有一个新表来保存这些值并对它们执行算术不会影响以下的值colorTable:

print(colorTable[1][1])
Run Code Online (Sandbox Code Playgroud)

结果:

255
Run Code Online (Sandbox Code Playgroud)

随后:

color[1] = color[1] - 10

print(colorTable[1][1])
Run Code Online (Sandbox Code Playgroud)

结果:

255
Run Code Online (Sandbox Code Playgroud)