#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