在 Lua 中清除 table 个备选方案

Clearing table alternatives in Lua

我想清除一个 table 但不确定哪种方法最好,而且各有不同。它们有什么区别:

tbl = {}
for k, v in pairs(tbl) do v = nil end
for k, v in pairs(tbl) do tbl[k] = nil end

谢谢。

tbl = {}

这与其说是清除 table,不如说是创建一个新的。旧的 可能 被垃圾收集,这取决于是否有其他引用。

for k, v in pairs(tbl) do v = nil end

这绝对没有任何作用。这是对处理能力的浪费。

for k, v in pairs(tbl) do tbl[k] = nil end

这实际上清空了 table 而没有创建新的。对于小的 tables,这通常比创建一个新的 table 更高效,因为这意味着 GC 的工作更少,但这是一种有点高级的优化技术,不像清除 table s 总是更好。

注意 pairs 使用 next 函数,它可以处理迭代时删除的键。