Swift: Optionals (опциональные типы или опционалы)

Главный «pain in ass» — optionals, или как же было просто с nil в Objective-c

В Objective-C если у обьекта отсутствовало значение — мы ему просто присваивали nil. Но для тех же структур или enum’ов приходилось использовать спец значения типа NSNotFound чтобы указать что значение отсутствует
Swift же позволяет указать отсутствие значения для любого типа, даже базового типа Int. Достигается это за счет добавления оператора ? после определения типа

Все это кажется довольно таки неплохим решением пока не сталкиваешься с этим на практике. Дело в том, что для того чтобы дальше использовать optional переменную необходимо либо каждый раз проверять ее на nil либо приводить к типу Int (без знака вопроса)

Знак ! после имени переменной number и есть приведение от optional типа к конкретному. И если мы попробуем привести number с помощью ! к типу Int и в этот момент переменная будет равна nil — вылетит runtime ошибка

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *