删除函数内传递给函数的表

时间:2016-11-19 10:30:29

标签: variables lua lua-table

如何将我传递给函数的表设置为nil?当我尝试

local t = {}

function deleteTable(table)
    table = nil
end

deleteTable(t)

没有任何反应,t仍指向表值。有没有办法将函数中传递给函数的表设置为nil

编辑:不试图删除表的内容,我想要的是从函数中删除对表的引用,以便表被垃圾回收。我错过了对实际尝试的无知。

2 个答案:

答案 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并且不使用函数,但是在我的程序中,函数首先使用表做其他事情;我只想让它以删除引用结束。那么这是最好的解决方案,还是有更理想的方式?

相关问题