Я понимаю, как работают опции, но это ставит меня в тупик. У меня есть переменная с именем num
, и я хочу увеличить ее, поэтому я сделал следующее:
var num:Int! = 0
num++ //ERROR - Unary operator ++ cannot be applied to an operand of type Int!
Но по какой-то причине Swift не позволяет мне увеличить принудительно развернутый Int
, хотя предполагается, что он должен рассматриваться как обычный Int
с возможностью nil за кулисами. Итак, я попробовал следующее, и это сработало:
var num:Int! = 0
num = num + 1 //NO ERROR
Однако, основываясь на сообщении об ошибке, которое оно мне дало, я попробовал следующее, чтобы оператор приращения все еще работал:
var num:Int! = 0
num!++ //NO ERROR
Мой вопрос: почему первый бит кода ломается, а второй и третий - нет? Кроме того, поскольку num
является Int!
, разве я не могу относиться к нему как к обычному Int
? Наконец, поскольку Int!
должен рассматриваться как обычный Int
, как я могу развернуть его в третьем примере? Спасибо.
0
, он не должен быть необязательным. Вы можете иметьvar num = 0
без необходимости инициализаторов - person Jack   schedule 01.08.2015num
никогда не будет установлено наnil
. - person Jack   schedule 01.08.2015postfix func ++(inout x: Int) -> Int
противfunc +(lhs: Int, rhs: Int) -> Int
. – Но я не знаю, почему автоматическая распаковка не происходит с IUO. - person Martin R   schedule 01.08.2015