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

ENUMERATION

Напоминание
• struct (структура) – в Java отсутствует
• Value type - ключевое отличие от class, в остальном много схожестей
• Многие встроенные типы являются структурой (String, Int, Dictionary, Array и пр.)
• Поддерживает не все принципы ООП

• class (класс)
• Reference type
• Более сложные объекты
• Поддерживает все принципы ООП

• enum (перечисление) - отличается по смыслу, будем проходить отдельно


• Value type
• Набор ограниченных значений
Enumeration
• enum - перечисление – набор ограниченных значений

• Дни недели, названия месяцев и пр. – все это могут быть enum

• В Java также доступен, но в Swift у перечисления более расширенный функционал

• В Java названия перечислений называют большими буквами (как константы), в Swift - маленькими

• Как и структура - может иметь init, subscript, computed properties, get/set


Raw Values
• В любой элемент enum можно присвоить raw value

• Raw value может быть только элементарным типом (Int, Double, Float, Character, String)
Nested types
• Типы могут вкладываться друг в друга

• В отличие от Java – вложенные типы независимы друг от друга и можно создавать экземпляры внутренних
типов без создания внешнего объекта

• Нет доступа к переменных внешнего типа

• Часто enum ипользуется в классе или структуре

• Зачем нужно:
• Разбить большой тип на несколько меньших
• Если встроенный тип используется только в этом внешнем типе
indirection
• Если внутри параметров associated values указан тип этого же enum (рекурсия)

• Чтобы правильно использовать память и не было ошибки overflow

• Применяется для построения древовидной структуры (файловая система, графы и пр.), где может быть любая
вложенность
Домашнее задание
• Прочитать
• https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.h
tml

• https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/NestedTypes.ht
ml