1

我有一个包含 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))

我只希望能够在表中的一个值之间随机选择。当我随机化该 vlue 时,我希望将其移除,这样我将剩下三个其他值可供随机选择。

我让你感到困惑吗?:)

4

1 回答 1

2

你是什​​么意思?

s = {2,4,1,3} -- the table
for k,v in pairs(s) do 
  if v==1 then 
     table.remove(s,k)
  end
end

print(#s) -- is now 3
for k,v in pairs(s) do print(v) end -- just the 3 values ...

@Vitae:当你问任何事情时,你应该描述你想做什么,而不是你想怎么做——尤其是当你不知道自己在做什么的时候......

也许您想从表中删除一个随机值?然后在随机索引处获取值...

function poprandom( t )
  local idx = math.random(1,#t)
  local ret = t[idx]
  table.remove(t, idx)
  return ret
end
于 2010-12-04T15:52:03.587 回答