Я пытаюсь понять Неявно развернутый необязательный параметр в быстром, меня смущает вторая переменная, как на изображении ниже.
Почему переменная b необязательна?
Я пытаюсь понять Неявно развернутый необязательный параметр в быстром, меня смущает вторая переменная, как на изображении ниже.
Почему переменная b необязательна?
Переменная b является необязательной, потому что переменная a 'может' вернуть ноль, и в этом случае b также будет ноль.
Изменить: вы назначили необязательную переменную другой переменной, для которой вы не определили конкретный тип. Xcode спасает вас, создав переменную b как необязательную. Рассмотрим этот пример:
var a: Int! = 6
a = nil
let b: Int = a
print(b)
Как и ваша, здесь переменная a является необязательной для типа Int, а b также является необязательной для типа Int. Здесь я специально определяю b как необязательное целое число, в отличие от вашей переменной b. Теперь, если я попытаюсь напечатать переменную, которой присвоено значение a, которое в этот момент было nil. Это опасно и просто приводит к фатальной ошибке в операторе присваивания. Сбой легко понять, потому что компилятор находит значение nil в необязательном типе и пытается присвоить его необязательному типу.
Только необязательные параметры могут содержать нулевое значение, поэтому, когда вы назначаете необязательное (допускающее значение) значение другой переменной b, оно автоматически обрабатывается как необязательное, поскольку значение, на которое оно опирается, допускает нулевое значение и, следовательно, переменная b также допускает нулевое значение.
:Int
как тип - person David Luque   schedule 31.07.2017