如何将我传递给函数的表设置为nil?当我尝试
local t = {}
function deleteTable(table)
table = nil
end
deleteTable(t)
没有任何反应,t
仍指向表值。有没有办法将函数中传递给函数的表设置为nil
?
编辑:不试图删除表的内容,我想要的是从函数中删除对表的引用,以便表被垃圾回收。我错过了对实际尝试的无知。
答案 0 :(得分:2)
简单地说,您无法将表格设置为nil
:
表是表是表。
可以做的是将指向所述表的表格的变量或插槽设置为nil
之类的其他内容。
没有办法(在debug-api之外)引用局部变量,你需要表和键来引用表中的一个插槽。
但即便如此,如果所有此类引用都已消失,那么表格只会被垃圾收集,而不是立即收集。
Lua不做手动内存管理,而是懒惰的垃圾收集。
答案 1 :(得分:0)
我相信我找到了解决方案。这是否适用于我正在尝试做的事情?
local t = {};
function removeReference(tab)
--do stuff with tab
return nil;
end
t = removeReference(t);
在上面的例子中我可以做t = nil并且不使用函数,但是在我的程序中,函数首先使用表做其他事情;我只想让它以删除引用结束。那么这是最好的解决方案,还是有更理想的方式?