在 Lua 中退出并重新启动函数
Exiting and Restarting a Function in Lua
我的问题是我有一个 function a()
需要在某些时候无条件退出。我的问题是如何实现无条件退出函数的目标。
Example:
local function a()
--Do Stuff
end
a()
换句话说,有没有办法用一个命令退出a()
?
只有几种方法可以 "exit" 函数:return
、coroutine.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
我的问题是我有一个 function a()
需要在某些时候无条件退出。我的问题是如何实现无条件退出函数的目标。
Example:
local function a()
--Do Stuff
end
a()
换句话说,有没有办法用一个命令退出a()
?
只有几种方法可以 "exit" 函数:return
、coroutine.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