Унарный оператор ++ нельзя применить к операнду типа 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 вместо.

Посмотрите этот очень хороший ответ для более подробной информации о том, почему это произошло.

Другие вопросы по тегам