Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不弹出堆栈的情况下使用lua_调用/lua_pcall_Lua_Lua Api - Fatal编程技术网

在不弹出堆栈的情况下使用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堆栈中。