Lua: table.remove 不适用于二维数组

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

t = table.remove(t, 1) -- 这个东西破坏了一切,但应该删除第一组数据

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

这个只是让我困扰,我已经和它斗争了4个小时,但是还是无法跳出死循环。尝试了几种不同的循环,不同的字母位置(v[1] -> k[1]等等),但是没有什么帮助。

点赞
用户1944004
用户1944004

table.remove 返回被删除的元素,而不是更新后的表。因此不要使用 t = table.remove(t, 1) 来赋值,而是要丢弃返回值,也就是不带任何赋值的 table.remove(t, 1)

请参阅手册

table.remove (table [, pos])

从表中删除位置为 pos 的元素(如果必要,将其他元素下移以关闭空间)。返回被删除的元素的值。pos 的默认值为表的长度 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
2018-05-06 00:22:19