修改C函数中的Lua参数

问题描述 投票:2回答:1

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,它就不再可用了。

这是可能的,如果是这样的话怎么样?

c lua
1个回答
3
投票

变式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
© www.soinside.com 2019 - 2024. All rights reserved.