Lua: table.remove не работает с 2D-массивом - PullRequest
0 голосов
/ 06 мая 2018
t = { 
  { 7, "123" }, 
  { 8, "234" }, 
  { 9, "345" }
}

t = table.remove(t, 1) -- This thing brokes everything, but should delete first group

for k, v in ipairs(t) do
  print(k, v[1], v[2])
end

Эта штука просто ненавидит меня, я боролся с ней 4 часа и не мог сдвинуться с мертвой точки. Пробовал несколько разных циклов, разные позиции букв (v[1] -> k[1] и т. Д.), Ничего не помогает.

1 Ответ

0 голосов
/ 06 мая 2018

table.remove возвращает удаленный элемент, а не обновленную таблицу. Просто не присваивайте t = table.remove(t, 1), а вместо этого отбрасывайте возвращаемое значение, т. Е. Просто table.remove(t, 1) без какого-либо присваивания.

См. Также руководство :

table.remove (таблица [, pos])

Удаляет из таблицы элемент в позиции pos, сдвигая вниз другие элементы, чтобы при необходимости закрыть пространство. Возвращает значение удаленного элемента. Значение по умолчанию для pos равно n, где n - длина таблицы, поэтому при вызове table.remove(t) удаляется последний элемент таблицы t.

.
t = { 
  { 7, "123" }, 
  { 8, "234" }, 
  { 9, "345" }
}

table.remove(t, 1)

for k, v in pairs(t) do
  print(k, v[1], v[2])
end
...