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

我的问题是,我有一个需要在某些时候无条件退出的 function a(),我的问题是如何在没有条件的情况下达到退出函数的目的。

例如:

 local function a()
   --Do Stuff
 end

 a()

换句话说,有没有一种方法可以用一个命令退出 a()

点赞
用户1442917
用户1442917

在函数中,只有几种方法可以“退出”该函数:使用 returncoroutine.yield(如果该函数作为协程执行),以及 error() 调用(你可以使用在函数周围使用 pcall 来捕获该调用)。

我不确定你所说的“没有条件退出函数”是什么意思,但其中一种选项应该适合你,因为没有其他可用的选项。(你也可以使用调试钩子,并从中调用 error() 而无需修改函数代码,但我不认为在你的情况下需要。)

2015-01-11 06:39:10
用户869951
用户869951

是的:

function a()
    -- 做一些事情
    if time_to_exit then
        return
    end
    -- 做更多的事情
end

time_to_exit 可以是任何你想要的东西:检查某些东西是否已变为真或非空,或检查时间是否已经流逝等。细节实际上取决于你想要实现什么(如果您需要更多细节,请澄清您的帖子,并在此回答下发评论,以便我知道)。

2015-01-11 15:16:27
用户2726734
用户2726734

在函数中放置 do return end 将在到达该语句时无条件退出函数。

function a()
    -- 做一些事情
    do return end
    -- 更多的事情(不会执行)
end
2015-01-11 17:20:44