在 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
函数,它可以处理迭代时删除的键。
我想清除一个 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
函数,它可以处理迭代时删除的键。