Lua получает и выполняет функцию из C

#c #api #function #lua

#c #API #функция #lua

Вопрос:

Если у меня есть какой-нибудь lua-код, подобный этому:

 doSomething(function()
                print("Hello!")
            end)
  

Как я могу сделать так, чтобы с помощью C API я создавал функцию C Lua для doSomething, которая затем могла сохранять переданную ей функцию для выполнения позже?

Ответ №1:

Это просто обычная запись в стеке. Проверьте ее с помощью lua_isfunction() затем используйте luaL_ref() для генерации ссылки (чтобы сборщик мусора не украл ее), а затем, возможно lua_topointer() , для сохранения указателя на этот объект, зависит от того, что вы хотите с ним сделать.

Когда вы закончите, это просто luaL_unref() .

Комментарии:

1. О, пропустил более поздний бит выполнения, это просто lua_call() но убедитесь, что вы прочитали подробности в разделе lua.org/manual/5.1/manual.html#lua_call