如何在Lua中清空或重置表格

3

我应该如何完全清空或重置Lua中的表格。最终我想将其变成一个空表。


4
可能是如何删除Lua表中的所有元素?的重复问题。 - finnw
3个回答

8
你需要遍历键并将它们设为nil。
for k,v in pairs(t) do
  t[k] = nil
end

如果是数组,则使用table.remove()删除值。

1
如果使用remove,请从数组的末尾开始删除,否则会花费很长时间,因为在创建空洞之后的所有元素都需要移动。使用“pairs”方法更快。 - jpjacobs
3
请注意,虽然这种方法可以清除大多数表格,但使用元表可以制作无法通过此方法进行清除的表格。 - Alexander Gladysh

3
这种方式怎么样?
t = {..some non-empty table..}
...some code...
t={}

1
这将一个表替换为另一个表,而不是清空其内容。(话虽如此,这通常是首选的方法。) - Alexander Gladysh
1
如果没有更多与目标表相关联的变量 - 那么gc将从内存中删除它,并创建一个具有新物理地址的新表。 否则,使用循环将每个元素置空是最好的选择。 - Archinamon

0

这将创建一个新表't',并删除旧值:

t = {1, 2, 3}
t = {}
collectgarbage()

这个操作会删除表中的所有值,最终导致没有表存在:

t = {1, 2, 3}
t = nil
collectgarbage()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接