一元运算符++不能应用于Int类型的操作数

时间:2015-05-27 08:29:58

标签: swift int unary-operator

为什么下面的快速代码会给我带来错误“一元运算符'++'不能应用于'Int'类型的操作数”??? (在Xcode-6.3.2上使用swift-1.2)

struct Set {

    var player1Games: Int
    var player2Games: Int

    init() {
        self.player1Games = 0
        self.player2Games = 0
    }

    func increasePlayer1GameScore () {
        player1Games++   // error: Unary operator '++' cannot be applied to an operand of type 'Int'
    }

    func increasePlayer2GameScore () {
        player2Games++   // error: Unary operator '++' cannot be applied to an operand of type 'Int'
    }

}

3 个答案:

答案 0 :(得分:10)

错误消息有点误导。您需要做的是mutating之前添加func以指定它modify结构:

struct MySet {

    var player1Games: Int
    var player2Games: Int

    init() {
        self.player1Games = 0
        self.player2Games = 0
    }

    mutating func increasePlayer1GameScore() {
        player1Games++
    }

    mutating func increasePlayer2GameScore() {
        player2Games++
    }

}

注意:Set是Swift中的一个类型,我建议为你的结构使用不同的名称。

答案 1 :(得分:5)

在函数声明之前使用mutating关键字表示您正在改变类变量。

将您的结构更改为class

这可以解决你的问题:)。

答案 2 :(得分:2)

在Swift 3和更高版本中,此错误的原因是++--运算符已从语言中删除。建议改用x += 1

有关发生这种情况的原因,请参见this very good answer