lua - Lua 中的清理表替代方案

标签 lua lua-table

我想清理一张 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/

相关文章:

c++ - 从 C++ 调用 Lua 函数

c - 在 C 中获取 Lua 表大小

algorithm - 根据 2D Grid 中的点查找所有可能的矩形

Lua表库被删除了?

syntax - 在 Lua 中返回多个整数并将它们作为多个参数传递

luarocks 安装失败?

loops - 循环直到在表中找到 2 个特定值?

api - 如何在Lua中创建表,然后从C API添加值?

function - 如何在lua中使用表上的函数值

memory - Lua表内存?