swift - '+ =' produces ' ()'。我如何从闭包中返回增量值

标签 swift swift3

<分区>

我正在使用 Swift3。这个语法给我一个错误:

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

我不能使用 counter++ 递增,因为它已被弃用。 有没有一种优雅的方法来处理这个问题,所以我返回的第一个值将是 0 ? 我的“hacky”方式是启动计数器 = -1。并在前面增加一行。

counter+=1;
return counter;

谢谢。

编辑: 我试图在 StackOverflow 中搜索此错误,但没有找到答案。这个问题被标记为重复,但我无法找到相关/原始问题。

最佳答案

只是另一种方式,使用defer 在返回后递增计数器

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

关于swift - '+ =' produces ' ()'。我如何从闭包中返回增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982523/

相关文章:

iOS Animate UIPicker 高度变化

ios - 我应该如何缩放我的物理 body ?

ios - ARKit 有没有办法识别被触摸的节点?

swift3 - Alamofire 4 上传带参数

具有值类型的 JSONSerialization

timer - 使用 Swift 3 停止预定定时器,即使定时器为零,定时器也会继续触发

ios - Swift 的 UITextView 的 shouldChangeTextInRange 方法没有被调用?

swift - Xcode 8/Swift 3 中 ScrollView 内的 StackedView

ios - Alamofire - 对成员 'upload(_:to:method:headers:)' 的模糊引用

swift - 使用 Swift3 的完成处理程序调用 Objective C 方法(完成是 ​​IUO?)