Как я могу сжать таблицу после удаления значения из нее? - PullRequest
1 голос
/ 04 декабря 2010

У меня есть таблица, которая содержит 4 значения.

Например:

2
4
1
3

Я использую функцию для просмотра таблицы, скажем, номер 1 с помощью пари получить его положение в таблице.

Затем я использую table.remove, чтобы удалить 1 из этой позиции.Теперь я хотел бы сжать таблицу до трех значений 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 

Я понимаю, в чем проблема, но не знаю, как ее решить.1017 * Я хочу иметь возможность только случайным образом выбирать одно из значений в таблице.И когда я обнаружу этот vlue, я хочу, чтобы он был удален, чтобы я остался с тремя другими значениями случайным образом.

Я вас смущаю?:)

1 Ответ

2 голосов
/ 04 декабря 2010

Что вы имеете в виду?

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
...