我想清理一张 table ,但不确定哪种方式最好,并且各有不同。它们之间有什么区别:
tbl = {}
for k, v in pairs(tbl) do v = nil end
for k, v in pairs(tbl) do tbl[k] = nil end
谢谢。
最佳答案
tbl = {}
这并没有清除表,而只是创建一个新表。旧的可能会被垃圾收集,具体取决于是否有其他引用它。
for k, v in pairs(tbl) do v = nil end
这绝对没有任何作用。这是对处理能力的浪费。
for k, v in pairs(tbl) do tbl[k] = nil end
这实际上清空了表而不创建新表。对于小型表,这通常比创建新表的性能更高,因为这意味着 GC 的工作量更少,但这是一种有点高级的优化技术,而且清理表并不总是更好。
请注意,pairs
使用 next
函数,它可以处理迭代时删除的键。
关于lua - Lua 中的清理表替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160948/