在一个函数中删除传递的表格

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

local t = {}

function deleteTable(table)
    table = nil
end

deleteTable(t)

什么也没有发生,t仍然指向一个表格值。有没有办法从函数内部将传递给函数的表格设置为nil

编辑:不是试图删除表格的内容,我想要的是从函数内部删除对表格的引用,以便表格可以被垃圾回收。我说错了,因为我不知道自己实际想要做什么。

点赞
用户3204551
用户3204551

简而言之,你不能将表格设为 nil 一个表是一个表就是一个表。

你可以做的是将指向该表的变量或槽设置为其他东西,如 nil

在调试 API 之外,没有办法引用局部变量,你需要表和键来引用表中的槽。

但即使是这样,只有在所有这样的引用都消失之后,表才会被垃圾回收,而且不会立即回收。

Lua 不进行手动内存管理,而是进行懒惰垃圾收集。

2016-11-19 10:49:49
用户4976796
用户4976796

我相信我找到了一个解决方案。我正在尝试做的事情这样会行吗?

local t = {};

function removeReference(tab)
    --对tab进行一些处理

    return nil;
end

t = removeReference(t);

在上面的例子中,我可以只做t = nil,而不使用一个函数,但在我的程序中,该函数首先对表进行其他操作;我只想让它结束并删除引用。所以这是最好的解决方案吗,还是有更理想的方法?

2016-11-19 18:33:24