删除 table 后如何将所有 table 向下移动?

How can I shift all of the tables down after removing a table?

在此代码中:

t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

有没有办法让我删除 t[0],然后将 table 的所有值都向下移动,这样后记看起来像这样:

t[0].num = '1'
t[1].num = '2'

虚函数示例:

t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

for i=0,tableLength(t) do
    print(t[i])
end
--Output: 012

remove(t[0])

for i=0,tableLength(t) do
    print(t[i])
end
--Output: 12

this answer, by creating a new table using the result of table.unpack所述:

t = {table.unpack(t, 1, #t)}
t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

此代码将导致索引错误 t[0],一个 nil 值。

t只有一个字段,即t.num

你需要做这样的事情:

t = {}
for i = 0, 2 do
  t[i] = {num = tostring(i)}
end

如果您想创建所需的演示 table。

由于 Lua 中有许多有用的函数假设您使用基于 1 的索引,因此我建议您从索引 1 开始。

local t = {1,2,3,4,5}

选项 1:

table.remove(t, 1)

选项 2:

t = {table.unpack(t, 2, #t)}

选项 3:

t = table.move(t, 2, #t, 1, t)
t[#t] = nil

选项 4:

for i = 1, #t-1 do
  t[i] = t[i+1]
end
t[#t] = nil

还有更多选择。我不会一一列举。有些是原地做的,有些会产生新的 table 个对象。