我想做的是创建一个函数,可以遍历一些对象并为每个函数调用一个函数。我使用的是BlitzMax而不是C,但这是次要的,因为它有Lua的C函数的完整包装器。Lua有一个lua_pushcfunction()命令,但它的lua_pushfunction()命令在哪里?调用具有名称的函数非常容易,但如何调用作为参数传递的函数呢?
类似于:
通常你只需要使用"lua_getglobal(L,name)",它会将Lua函数放置在堆栈上,但如何从参数中获取它呢?
编辑
我回去试了一下之前找到的这个问题中的"luaL_ref()"。我正在使用"luaL_ref()"将函数值从堆栈顶部弹出并放入临时寄存器中,我使用从"luaL_ref()"返回的值来使用"lua_rawgeti()"获取列表中的每个项目。然后,在列表完成后,使用"luaL_unref()"来释放该寄存器。
类似于:
ForEach( PlanetList, function (planet)
if(planet.exists == true) then
Planet_Count = Planet_Count + 1
end
end )
通常你只需要使用"lua_getglobal(L,name)",它会将Lua函数放置在堆栈上,但如何从参数中获取它呢?
编辑
我回去试了一下之前找到的这个问题中的"luaL_ref()"。我正在使用"luaL_ref()"将函数值从堆栈顶部弹出并放入临时寄存器中,我使用从"luaL_ref()"返回的值来使用"lua_rawgeti()"获取列表中的每个项目。然后,在列表完成后,使用"luaL_unref()"来释放该寄存器。