Изменение аргументов Lua в функции C - PullRequest
2 голосов
/ 02 апреля 2019

Скрипт 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 Ответ

3 голосов
/ 02 апреля 2019

Вариант 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...