Вы находитесь на странице: 1из 7

OPTIONALS

Заметки
• Optional - это контейнер: может содержать любой тип данных или nil

• Зачем нужно:
• Компилятор будет обязывать проверять значения указанных переменных на пустоту (nil)
• Не сможете присвоить nil в обычную переменную (если она не Optional)

• В API библиотек большинство переменных или констант – Optional

• В Java также доступен класс Optional (все больше библиотек и фреймворков сейчас переходят на этот тип)

• При конвертации значений – часто возвращается Optional


Optional

• Контейнер можно очищать (присваивать nil), изменять


значение 10

• У контейнера есть тип (Int, String и т.д.)

• Контейнер – принимает значения только объявленного типа

• Для работы со значением контейнера – нужно всегда


извлекать это значение
Извлечение
• Явное (force unwrapping) – символ “?” при объявлении
• Извлечение значения вручную, где это необходимо в коде
• Для переменных, которые часто могут быть nil
• Для всех вариантов, где не подходит implicit unwrapping

• Неявное (implicit unwrapping) – символ “!” при объявлении


• Для переменных или констант, которые нужно обязательно один раз заполнить (проинициализировать) и потом
везде использовать
• Константы, которые инициализируются при создании объекта
• Позволяет НЕ выполнять извлечение значений вручную по всему коду

• Если попытаться извлечь значение из контейнера, где будет nil - runtime ошибка – одна из самых неприятных для
разработчика, т.к. возможно «падение» приложения (поэтому лучше отлавливать на этапе компилятора)
Проверка
• Желательно использовать проверку на nil перед использованием переменной (т.е. сразу не извлекать):

• Optional Binding (if let, guard let, switch-let) – вместо let можно использовать var

• Optional Chaining – сокращенный вариант проверки на nil (без использования лишних if)

• Nil coalescing – присвоение значения по-умолчанию, если получили nil


if let

Частая конструкция в коде:

• If var - если нужно изменять переменную в блоке

• If let - если нужно только получить значение и использовать его блоке


Домашнее задание

• Выполнить Hometask

• Прочитать раздел «Optionals»


• https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.h
tml

Вам также может понравиться

  • 6th Central Pay Commission Salary Calculator
    6th Central Pay Commission Salary Calculator
    Документ15 страниц
    6th Central Pay Commission Salary Calculator
    rakhonde
    100% (436)
  • 6th Central Pay Commission Salary Calculator
    6th Central Pay Commission Salary Calculator
    Документ15 страниц
    6th Central Pay Commission Salary Calculator
    rakhonde
    100% (436)
  • Teoria Dlya 8 Zadania
    Teoria Dlya 8 Zadania
    Документ8 страниц
    Teoria Dlya 8 Zadania
    Antony Berezovsky
    Оценок пока нет
  • 24 Casting PDF
    24 Casting PDF
    Документ4 страницы
    24 Casting PDF
    Antony Berezovsky
    Оценок пока нет
  • STR 1
    STR 1
    Документ1 страница
    STR 1
    Antony Berezovsky
    Оценок пока нет
  • 2 STR
    2 STR
    Документ1 страница
    2 STR
    Antony Berezovsky
    Оценок пока нет
  • 13 Set
    13 Set
    Документ4 страницы
    13 Set
    Antony Berezovsky
    Оценок пока нет
  • 2406 R
    2406 R
    Документ220 страниц
    2406 R
    Antony Berezovsky
    Оценок пока нет
  • A414881220 Rezolut
    A414881220 Rezolut
    Документ2 страницы
    A414881220 Rezolut
    Antony Berezovsky
    Оценок пока нет
  • A41-48812-2020 20201105 Reshenija I Postanovlenija
    A41-48812-2020 20201105 Reshenija I Postanovlenija
    Документ11 страниц
    A41-48812-2020 20201105 Reshenija I Postanovlenija
    Antony Berezovsky
    Оценок пока нет
  • Forum FizikovEV But
    Forum FizikovEV But
    Документ1 страница
    Forum FizikovEV But
    Antony Berezovsky
    Оценок пока нет
  • 20 Класс
    20 Класс
    Документ7 страниц
    20 Класс
    Antony Berezovsky
    Оценок пока нет
  • Pamyatka Dlya Roditely
    Pamyatka Dlya Roditely
    Документ1 страница
    Pamyatka Dlya Roditely
    Antony Berezovsky
    Оценок пока нет
  • Sertifikat TanyaDizayn
    Sertifikat TanyaDizayn
    Документ1 страница
    Sertifikat TanyaDizayn
    Antony Berezovsky
    Оценок пока нет
  • 25 Enumeration
    25 Enumeration
    Документ7 страниц
    25 Enumeration
    Antony Berezovsky
    Оценок пока нет
  • 23 Extension PDF
    23 Extension PDF
    Документ7 страниц
    23 Extension PDF
    Antony Berezovsky
    Оценок пока нет
  • 22 Протокол
    22 Протокол
    Документ7 страниц
    22 Протокол
    Antony Berezovsky
    Оценок пока нет
  • 14 Dictionary PDF
    14 Dictionary PDF
    Документ3 страницы
    14 Dictionary PDF
    Antony Berezovsky
    Оценок пока нет
  • 16.Собственные типы
    16.Собственные типы
    Документ7 страниц
    16.Собственные типы
    Antony Berezovsky
    Оценок пока нет
  • 15.Полезные методы PDF
    15.Полезные методы PDF
    Документ4 страницы
    15.Полезные методы PDF
    Antony Berezovsky
    Оценок пока нет
  • 17 Структура
    17 Структура
    Документ11 страниц
    17 Структура
    Antony Berezovsky
    Оценок пока нет
  • 12 Array PDF
    12 Array PDF
    Документ4 страницы
    12 Array PDF
    Antony Berezovsky
    Оценок пока нет
  • 21 Наследование PDF
    21 Наследование PDF
    Документ14 страниц
    21 Наследование PDF
    Antony Berezovsky
    Оценок пока нет
  • Nerics PDF
    Nerics PDF
    Документ4 страницы
    Nerics PDF
    Antony Berezovsky
    Оценок пока нет
  • 18 Initializer
    18 Initializer
    Документ6 страниц
    18 Initializer
    Antony Berezovsky
    Оценок пока нет
  • 26 Error PDF
    26 Error PDF
    Документ5 страниц
    26 Error PDF
    Antony Berezovsky
    Оценок пока нет
  • 8 Замыкания
    8 Замыкания
    Документ7 страниц
    8 Замыкания
    Antony Berezovsky
    Оценок пока нет
  • 5 Циклы PDF
    5 Циклы PDF
    Документ6 страниц
    5 Циклы PDF
    Antony Berezovsky
    Оценок пока нет
  • 1.Переменные константы PDF
    1.Переменные константы PDF
    Документ6 страниц
    1.Переменные константы PDF
    Antony Berezovsky
    Оценок пока нет