Унарный оператор ++ нельзя применить к операнду типа Int
Почему следующий быстрый код приносит мне ошибку "Унарный оператор '++' не может быть применен к операнду типа 'Int'"??? (используя swift-1.2 на 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'
}
}
3 ответа
Сообщение об ошибке немного вводит в заблуждение. Что вам нужно сделать, это добавить mutating
до func
указать, что это изменит структуру:
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, я бы предложил использовать другое имя для вашей структуры.
Использовать mutating
ключевое слово перед объявлением функции, чтобы указать, что вы изменяете переменные класса.
ИЛИ ЖЕ
Измените свою структуру на class
,
Это должно исправить ваши проблемы:).
В Swift 3 и более поздних версиях причина этой ошибки заключается в том, что ++
а также --
операторы были удалены из языка. Рекомендуется использовать x += 1
вместо.
Посмотрите этот очень хороший ответ для более подробной информации о том, почему это произошло.