2016-12-05 88 views
0

我使用Swift3。此語法給我一個錯誤:'+ ='產生'()'。我怎樣才能返回從收尾增加的值

func countingClosure() -> (() -> Int) { 
    var counter = 0 
    let incrementCounter:() -> Int = { 
     return counter+=1; 
    } 
    return incrementCounter 
} 

我不能增加使用counter ++,因爲它不推薦使用。 有沒有一種處理這個問題的方法,所以我返回的第一個值是0? 我「哈克」的方式將啓動counter = -1。並在之前增加一行。

counter+=1; 
return counter; 

謝謝。

編輯: 我試圖搜索StackOverflow這個錯誤,並沒有找到答案。這個問題被標記爲重複,但我無法找到相關/原始問題。

+1

你可以在一個單獨的變量計數器的值存儲遞增之前,或使用'defer'。鏈接到問答中的兩種方法的示例。 –

回答

1

只是另一種方式,用defer返回

後,計數器加一
func countingClosure() -> (() -> Int) { 
    var counter = 0 
    let incrementCounter:() -> Int = { 
     defer { 
      counter += 1 
     } 
     return counter 
    } 
    return incrementCounter 
}