我正在尝试执行嵌套递归函数,但是当我编译时,编译器崩溃(分段错误)。
这是我的代码:
func test()
{
func inner(val : Int)
{
println("\(val)")
if val > 0
{
inner(val - 1)
}
}
inner(3)
}
编译器记录are here
答案 0 :(得分:18)
inner
之前捕获对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)
当然没有嵌套我们根本没有任何问题,例如以下工作完全符合预期:
{{1}}
我说:报告吧!