如何在Swift中实现非本地退出?

时间:2014-06-08 11:12:31

标签: swift

我知道Swift does not have try/catch,但是有没有其他方法可以让我从一个函数退出到一个更高的堆栈而不返回介入函数?例如,在以下代码中可以直接从d()退出到a(),以便只执行第一个print语句(在a()中)?

func a() {
    b()
    println("returned to a()")
}
func b() {
    c()
    println("returned to b()")
}
func c() {
    d()
    println("returned to d()")
}
func d() {
    // exit to a()
}

a()

如果Swift确实尝试过/ catch我可以简单地用“{1}}将调用包裹到b()并在try中抛出异常。

2 个答案:

答案 0 :(得分:0)

不,Swift在核心语言中没有这个。可能有黑客可以解决它(手动操作堆栈等),但解决此问题的最佳方法是返回一些指示其退出状态的值,并始终检查函数调用的结果。就像在C。

答案 1 :(得分:0)

可以预期,一旦将异常引入语言,就会出现更高级的控制结构,例如call-with-current-continuation或更少相关。现在,没什么。