小编Gal*_*613的帖子

如何将Lua函数传递给C函数并多次执行Lua函数?

我想要做的是创建一个函数,它将迭代一些对象并为每个函数调用一个函数.我使用的是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()在列表完成后使用以释放该寄存器.

lua stack arguments push function

4
推荐指数
2
解决办法
3567
查看次数

标签 统计

arguments ×1

function ×1

lua ×1

push ×1

stack ×1