【发布时间】:2025-12-30 08:15:16
【问题描述】:
我想要做的是创建一个函数,它将遍历一些对象并为每个函数调用一个函数。我使用的是 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 )
通常你只是说 "lua_getglobal(L,name)" 并且它把 lua 函数很好地放在堆栈上,但是你如何从一个参数中得到它呢?
编辑
我返回并实际尝试使用来自this question I found earlier 的luaL_ref()。我正在做的是使用 luaL_ref() 从堆栈顶部弹出函数值并将其放入临时寄存器中,我使用从 luaL_ref() 返回的值对列表中的每个项目使用 lua_rawgeti() .然后在列表完成后使用luaL_unref()释放该寄存器。
【问题讨论】:
-
请将您的解决方案提取到答案并接受它。
标签: function lua stack push arguments