我想要做的是创建一个函数,它将迭代一些对象并为每个函数调用一个函数.我使用的是BlitzMax,而不是C,但除此之外,因为它有一个完整的Lua C函数包装器.Lua有一个lua_pushcfunction()命令,但是它的lua_pushfunction()命令在哪里?调用具有名称的函数非常容易,但是如何调用作为参数传递的函数?
就像是:
ForEach( PlanetList, function (planet)
if(planet.exists == true) then
Planet_Count = Planet_Count + 1
end
end )
Run Code Online (Sandbox Code Playgroud)
通常你只是说"lua_getglobal(L,name)"并且它将lua函数很好地放在堆栈上,但是如何从一个参数中得到它?
编辑
我回去,并使用真实目的是试图luaL_ref()从这个问题,我发现较早.使用luaL_ref()弹出从堆栈的顶部的函数值,并把它变成一个临时寄存器什么我做的是,我用从返回的值luaL_ref()使用lua_rawgeti()的列表中的每个项目.然后luaL_unref()在列表完成后使用以释放该寄存器.