在不弹出堆栈的情况下使用lua_调用/lua_pcall
当我使用在不弹出堆栈的情况下使用lua_调用/lua_pcall,lua,lua-api,Lua,Lua Api,当我使用lua\u call或lua\u pcall时,除了运行lua块外,它还从堆栈中弹出块。有没有什么方法可以让我在运行区块的同时仍将区块保留在堆栈上?你可以使用lua\u pushvalue或lua\u copy来制作区块的额外副本,而不是制作副本,我能不能永远不将其从堆栈中移除?我想你不能。这就是lua_call的工作原理。有什么原因吗,在这个额外的步骤中烘焙看起来很奇怪?很抱歉,如果我遗漏了一些明显的/基本的东西,我是LuaAPI的新手,所以我可能是个笨蛋。可能,lua的作者选择了这种
lua\u call
或lua\u pcall
时,除了运行lua块外,它还从堆栈中弹出块。有没有什么方法可以让我在运行区块的同时仍将区块保留在堆栈上?你可以使用lua\u pushvalue
或lua\u copy
来制作区块的额外副本,而不是制作副本,我能不能永远不将其从堆栈中移除?我想你不能。这就是lua_call的工作原理。有什么原因吗,在这个额外的步骤中烘焙看起来很奇怪?很抱歉,如果我遗漏了一些明显的/基本的东西,我是LuaAPI的新手,所以我可能是个笨蛋。可能,lua的作者选择了这种lua_调用的行为来帮助计算链式函数,例如local x=f(g())
,否则您必须手动移动g()返回的所有值
在Lua API堆栈中。