我正在使用Swift3。这种语法给我一个错误:
func countingClosure() -> (() -> Int) {
var counter = 0
let incrementCounter: () -> Int = {
return counter+=1;
}
return incrementCounter
}
我不能使用counter ++递增,因为它已被弃用。 有没有一种方式来处理这个,所以我返回的第一个值将是0? 我“hacky”的方式是启动counter = -1。并在之前增加一行。
counter+=1;
return counter;
感谢。
编辑: 我试图搜索StackOverflow这个错误,但没有找到答案。这个问题被标记为重复,但我无法找到相关/原始问题。
答案 0 :(得分:1)
换句话说,使用defer
在返回后递增计数器
func countingClosure() -> (() -> Int) {
var counter = 0
let incrementCounter: () -> Int = {
defer {
counter += 1
}
return counter
}
return incrementCounter
}