'+ ='生成'()'。如何从闭包中返回递增的值

时间:2016-12-05 20:13:16

标签: swift swift3

我正在使用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这个错误,但没有找到答案。这个问题被标记为重复,但我无法找到相关/原始问题。

1 个答案:

答案 0 :(得分:1)

换句话说,使用defer在返回后递增计数器

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