Вложенная рекурсивная функция в быстрой

Я пытаюсь выполнить вложенную рекурсивную функцию, но когда я компилирую, сбой компилятора (ошибка сегментации).

Вот мой код:

func test()
{
    func inner(val : Int)
    {
        println("\(val)")
        if val > 0
        {
           inner(val - 1)
        }
    }
    inner(3)
}

И журналы компилятора здесь

Ответ 1

интересно... похоже, может быть, это прикольно при попытке захватить ссылку на 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)

Я бы сказал: сообщите об этом!