我有一个包含4个值的表。
例如:
2
4
1
3
我使用一个函数来逐步查找表格,让我们通过使用对来说出数字1并获得它在表格中的位置。
然后我使用table.remove从该位置删除1。我现在要做的是压缩表格,使其长度为3个值
2
4
3
我对Lua很新,所以对我很温柔。 :)
我所拥有的就是这个:
CloseRandomConsole = math.random(1,(#ConsoleTable))
If CloseRandomConsole == 1 then
for key, value in pairs(ConsoleTable) do
if value == "1" then
table.remove(ConsoleTable, key)
break
end
end
我知道我哪里出错但我不知道如何解决它。
math.random(1,(#ConsoleTable))
我只希望能够在表格中的一个值之间随机。当我发誓说我想要删除它时,我会留下三个其他值来随机。
我让你感到困惑吗? :)
答案 0 :(得分:2)
table.remove(ConsoleTable, key)
确实会从表中删除一个值,从而将其大小减小1.因此,下次调用math.random(1,(#ConsoleTable))
时,其范围也将减小一个。说实话,看起来你做得很好,我不确定问题是什么。
编辑:这个单行怎么样?
table.remove(ConsoleTable, math.random(1, #ConsoleTable))
我认为这会从表中随机删除一个“控制台”。也许如果你能尝试,如果它不是你想要的,详细解释什么是错的,我们可以尝试更多的东西。
答案 1 :(得分:2)
在迭代它时,从表中删除项目通常被认为是错误的编程习惯。许多语言都因此而感到困惑。如果你真的想这样做那么你最好创建第二个镜像表,然后在从原始表中删除项目时对其进行迭代。
但是,我建议将控制台的状态存储在表中,并将其设置为非活动状态(可能是状态0)并使其他状态保持活动状态(状态1)。然后玩家可以将一些设置为活动状态,然后老板选择其中一个并再次停用它。您需要更多代码行,但它应该更灵活,更容易理解。