数组在Lua中表现奇怪

时间:2016-08-02 13:18:15

标签: arrays lua

我是Lua的菜鸟。我有两个数组

第一个:

levels={
-- 1
{
{9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9},
{9,9,1,0,9,0,3,9,9},
{9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9}
}
,
-- 2
{
{9,9,9,9,9},
{9,9,9,9,9},
{9,9,1,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,3,9,9},
{9,9,9,9,9},
{9,9,9,9,9}
}
,
-- 3
{
{9,9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9,9},
{9,9,0,9,0,9,9,9,9,9},
{9,9,1,0,0,9,0,3,9,9},
{9,9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9,9}
}
}

第二个我这样声明:

playingLevel=levels[1]

问题是在我更改了playingLevel值后,levels数组也会以相同的方式改变。我想只改变playLevel。

1 个答案:

答案 0 :(得分:2)

表值是lua中的引用。当你做的时候

levels[1]

您没有将playingLevel的表格值复制到levels[1],而是在playingLevel处获得对实际数据的引用,因此通过levels[1][some_index] = new_value更改数组值与更改值基本相同,就像您编写playingLevel = copyTable(levels[1])一样。

如果您需要数据副本,则需要一个能够为您创建副本的功能。 (根据您的使用情况,浅或深拷贝)

所以你的代码看起来像copyTable,而sliced_qbot.Rdata是你知道如何创建目标表副本的函数的自定义实现。