在C函数中修改Lua参数

Lua脚本使用了我下面定义的一个C函数:

function lua_func()

    local var = 5

    -- 在这里做一些操作,可能会使用 var。

    c_func(var)

    -- 在这里进行其他操作,不能使用 var。

end

这个C函数需要一个由调用者创建的参数来执行操作。

这个参数只能使用一次,即在C函数使用之后,我不希望它再被Lua脚本中的其他部分所访问。

我正在寻找C函数“消耗”该参数的方法。使用它,然后将其设置为 nil,这样就不能再使用了。

这种方法可行吗?如果可以,该怎么实现?

点赞
用户6834680
用户6834680

变体1:

function lua_func()

    do
        local var = 5

        -- 在这里做一些事情,可能使用var。

        c_func(var)
    end

    -- 在这里做一些其他事情,不能使用var。

end

变体2:

function lua_func()

    local var_container = {5}

    -- 在这里做一些事情,可能使用var。

    c_func(var_container)  -- 离开之前将nil分配给var_container [1]

    -- 在这里做一些其他事情,不能使用var。

end

变体3:

function lua_func()

    local var = 5
    local destructor = function() var = nil end

    -- 在这里做一些事情,可能使用var。

    c_func(var, destructor)  -- 在退出之前调用destructor()

    -- 在这里做一些其他事情,不能使用var。

end
2019-04-02 10:34:58