我想做一個嵌套的遞歸函數,但是當我編譯時,編譯器崩潰(分段錯誤)。swift嵌套遞歸函數
這裏是我的代碼:
func test()
{
func inner(val : Int)
{
println("\(val)")
if val > 0
{
inner(val - 1)
}
}
inner(3)
}
,編譯器日誌are here
我想做一個嵌套的遞歸函數,但是當我編譯時,編譯器崩潰(分段錯誤)。swift嵌套遞歸函數
這裏是我的代碼:
func test()
{
func inner(val : Int)
{
println("\(val)")
if val > 0
{
inner(val - 1)
}
}
inner(3)
}
,編譯器日誌are here
有趣......好像也許它想逃試圖捕捉到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)
我會說:舉報吧!
對我來說看起來像一個bug –
是的,提交一個錯誤報告,編譯器不應該崩潰:p – Jack
我知道編譯器不應該崩潰,但是因爲它是beta版本,所以語法錯誤會導致這種錯誤。我的問題是:我的代碼中是否有語法錯誤?有沒有像OCaml中的'rec'關鍵字? – Morniak