【发布时间】:2019-08-17 23:56:18
【问题描述】:
我知道 Lua 会在内存中保留一个表,只要在代码中的某处仍然存在对它的引用,这意味着您不能通过将表作为参数传递给函数来将它们设置为 nil。但是,我不明白为什么您可以对子表执行此操作。
local a = {}
a.b = {}
local function remove( t )
t.b = nil
t = nil
end
remove( a )
print( a and a.b, a )
在将 a 作为参数传递给函数 remove 之后,我将参数及其子表设置为 nil。由于上述原因,我知道这不应该将 a 设置为 nil,但是有人可以告诉我为什么 a.b 可以设置为 nil,即使我的理解,它仍然应该从外部引用它,就像 a 一样。
【问题讨论】:
标签: lua