Reputation: 7012
Why does the following swift code bring me the error "Unary operator '++' cannot be applied to an operand of type 'Int'" ??? (using swift-1.2 on Xcode-6.3.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'
}
}
Upvotes: 5
Views: 2916
Reputation: 2431
In Swift 3 and later, the reason for this error is that the ++
and --
operators have been removed from the language. It's recommended to use x += 1
instead.
See this very good answer for more detail on why this has happened.
Upvotes: 2
Reputation: 70097
The error message is a bit misleading. What you need to do is add mutating
before func
to specify that it will modify the struct:
struct MySet {
var player1Games: Int
var player2Games: Int
init() {
self.player1Games = 0
self.player2Games = 0
}
mutating func increasePlayer1GameScore() {
player1Games++
}
mutating func increasePlayer2GameScore() {
player2Games++
}
}
Note: Set
is a type in Swift, I would suggest to use a different name for your struct.
Upvotes: 10
Reputation: 2269
Use the mutating
keyword before a function declaration to indicate you're mutating the class variables.
OR
Change your struct to a class
.
This should fix your issues :).
Upvotes: 5