一尘不染

如何替换position ++代码以使其与Swift 3兼容?

swift

我有以下类,它具有getNextToken迭代数组项的方法:

class Parser {
    let tokens: [Token]
    var position = 0

    init(tokens: [Token]) {
        self.tokens = tokens
    }

    func getNextToken() -> Token? {
        guard position < tokens.count else {
            return nil
        }
    return tokens[position++]
    }
}

但是我收到来自编译器的警告消息,在Swift 3中将弃用++

我应该如何重写我的代码以让方法在当前位置返回数组项并在此之后递增位置?

添加多行的标准建议position +=1不适合此处,因为我在评估时正完全退出示波器tokens[position++]


阅读 236

收藏
2020-07-07

共1个答案

一尘不染

defer在计算返回值 之后 ,可用于递增position变量 : __

func getNextToken() -> Token? {
    guard position < tokens.count else {
        return nil
    }
    defer {
        position += 1
    }
    return tokens[position]
}
2020-07-07