我是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。
答案 0 :(得分:2)
表值是lua中的引用。当你做的时候
levels[1]
您没有将playingLevel
的表格值复制到levels[1]
,而是在playingLevel
处获得对实际数据的引用,因此通过levels[1][some_index] = new_value
更改数组值与更改值基本相同,就像您编写playingLevel = copyTable(levels[1])
一样。
如果您需要数据副本,则需要一个能够为您创建副本的功能。 (根据您的使用情况,浅或深拷贝)
所以你的代码看起来像copyTable
,而sliced_qbot.Rdata
是你知道如何创建目标表副本的函数的自定义实现。