Использование оператора increment дает ошибку сборки "swift унарный оператор" ++ "не может быть применен к операнду типа "Int""

В разделе Основные Операторы, в руководстве по языку программирования Swift указано, что ++ является допустимым оператором:

"более сложные примеры включают логический оператор && (как в случае enteredDoorCode & & passedRetinaScan) и оператор инкремента ++i, который является ярлыком для увеличения значения i на 1."

Выдержка Из: Apple Inc. "Язык Программирования Swift."в iBooks. https://itun.es/gb/jEUH0.l

однако при попытке сделать это на игровой площадке;

import UIKit

let i = 0
i++

ошибка сборки показывает:

swift унарный оператор " ++ "не может быть применен к операнду типа "Int"

почему?

3 ответов


Да, не самая лучшая ошибка компилятора.

проблема в том, что вы объявили i используя let. Поскольку целые числа являются типами значений, это означает i является неизменяемым – его нельзя изменить после присвоения значения.

если вы объявляете i as var i = 0 код компилируется.


определен i Как неизменяемые с let. Попробуй!--2--> вместо.


кроме того, если вы изменяете значение переменной типа значения (структуры или перечисления) внутри одного из его методов, вы должны определить этот метод как мутирующий:

mutating func modify() {
   ++i
}