我试图做一个嵌套递归函数,但是当我编译时,编译器崩溃(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)
我会说:报告!