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

Posted

技术标签:

【中文标题】删除表格后如何将所有表格向下移动?【英文标题】:How can I shift all of the tables down after removing a table? 【发布时间】:2022-01-20 17:48:45 【问题描述】:

在这段代码中:

t = 
    num = '',


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

有没有办法让我删除t[0],然后将表的所有值向下移动,这样后记就变成了这样:

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

【问题讨论】:

您的代码没有运行,因为 t[0] 为 nil。 您确定需要索引从 0 开始吗​​? Lua 的语义和标准库假定数组从索引 1 开始。如果您可以使数组基于 1,则可以使用 table.remove(t, 1) 我对你最后一个问题lua.org/manual/5.4/manual.html#pdf-table.remove 的回复应该让你参考Lua 参考手册。 lua.org/manual/5.4/manual.html#pdf-table.remove 你不是通过从其他人那里获得 sn-ps 来学习 Lua。如果您学习了非常基础的知识,您可以自己想出一个解决方案或至少一半的解决方案。所以请阅读手册。 【参考方案1】:
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

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

由于 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

还有更多选择。我不会一一列举。有些是在原地完成的,有些会产生新的表对象。

【讨论】:

谢谢,选项 1 完美。我的 Game Jam 只剩下 24 多小时了,祝我好运!【参考方案2】:

如this answer 中所述,通过使用table.unpack 的结果创建一个新表:

t = table.unpack(t, 1, #t)

【讨论】:

以上是关于删除表格后如何将所有表格向下移动?的主要内容,如果未能解决你的问题,请参考以下文章

excel数据表格中的空白行如何清除?

excel表格如何统一删除一串数字前面相同数字

请问TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别

arcgis链接表格后多出很多字段

怎么剔除两个excel表格里重复的资料

MySQL删除表怎么恢复?