Lua脚本正在使用我定义的C函数之一:
function lua_func()
local var = 5
-- Do some stuff here, possibly using var.
c_func(var)
-- Do other stuff here, that must not use var.
end
此C函数接受调用者创建的参数并执行所需的操作。
C函数的这个参数必须是单一用法的,即在C函数使用它之后,我不希望它对Lua脚本的其余部分更容易访问。
我正在寻找一种方法让C函数“消耗”这个参数。要使用它,然后将其设置为nil
,它就不再可用了。
这是可能的,如果是这样的话怎么样?
变式1:
function lua_func()
do
local var = 5
-- Do some stuff here, possibly using var.
c_func(var)
end
-- Do other stuff here, that must not use var.
end
变式2:
function lua_func()
local var_container = {5}
-- Do some stuff here, possibly using var.
c_func(var_container) -- it assigns nil to var_container[1] before exit
-- Do other stuff here, that must not use var.
end
变式3:
function lua_func()
local var = 5
local destructor = function() var = nil end
-- Do some stuff here, possibly using var.
c_func(var, destructor) -- it invokes destructor() before exit
-- Do other stuff here, that must not use var.
end