2016-12-05 61 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 
}