在 Lua 中退出并重新启动函数

Exiting and Restarting a Function in Lua

我的问题是我有一个 function a() 需要在某些时候无条件退出。我的问题是如何实现无条件退出函数的目标。

Example:

 local function a()
   --Do Stuff
 end

 a()

换句话说,有没有办法用一个命令退出a()

只有几种方法可以 "exit" 函数:returncoroutine.yield(如果函数作为协程执行)和 error() 调用(这你可以在函数周围用 pcall 陷阱)。

我不确定您所说的 "exiting a function without conditions" 是什么意思,但是这些选项之一应该适合您,因为没有其他选项可用。 (您也可以使用调试钩子并从中调用 error() 而根本不修改您的函数代码,但我不希望您的情况需要这样做。)

是:

function a()
    -- do stuff
    if time_to_exit then
        return 
    end
    -- do more stuff
end

time_to_exit 可以是任何你想要的:检查某事是否已变为 true 或非 nil 或检查时间是否已过等。细节实际上取决于你想要实现的目标(如果你需要更多详细信息,请澄清您的 post 和 post 对此答案的评论,以便我知道)。

do return end放在函数中的任意位置,到达时无条件退出函数。

function a()
    -- some stuff
    do return end
    -- some more stuff (that won't execute)
end