为什么下面的快速代码会给我带来错误“一元运算符'++'不能应用于'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'
}
}
答案 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。