我试图做一个嵌套递归函数,但是当我编译时,编译器崩溃(Segmentation fault). 
  
 
这是我的代码:
func test()
{
    func inner(val : Int)
    {
        println("\(val)")
        if val > 0
        {
           inner(val - 1)
        }
    }
    inner(3)
} 
 编译器记录are here
解决方法
 有趣的…它似乎也许在尝试在定义之前捕获到内部的引用时,它是bailing? 
  
 
        以下修复它为我们:
func test() {
    var inner: (Int) -> () = { _ in }    // give it a no-op deFinition
    inner = { val in
        println("\(val)")
        if val > 0 {
            inner(val - 1)
        }
    }
    inner(3)
} 
 当然没有嵌套,我们根本没有任何问题,例如以下工作完全如预期:
func test(val: Int) {
    println("\(val)")
    if val > 0 {
        test(val - 1)
    }
}
test(3) 
 我会说:报告!