Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : optional, enum, nesting, unwrap

Можно ли создать кастомный аналог Optional? Как работает вложенность опционалов (например, Int???)?

Вопрос проверяет понимание того, что Optional в Swift — это всего лишь обобщённый перечисляемый тип, и как обрабатываются вложенные опционалы.

Короткий ответ

Да, Optional — это enum Optional<Wrapped> { case none; case some(Wrapped) }, и вы можете определить аналог. Вложенные опционалы автоматически «схлопываются»: Int??? при развёртке одинарным ! даёт Int??, и так далее, пока не окажется Int или nil.

Длинный ответ

Определение Optional:

enum MyOptional<Wrapped> {
    	case none
    	case some(Wrapped)
}

Механизм вложенности:

  • Int? — Optional<Int>.

  • Int?? — Optional<Optional<Int>>, может быть:

    • .none

    • .some(.none)

    • .some

Развёртка (!) и схлопывание:

  • При let x: Int?? = .some(nil)

    x! → nil (типа Int?)

  • При let y: Int??? = .some(.some(nil))

    y! → .some(nil) (типа Int??)

  • Swift позволяет цепочку x!! для полного извлечения.

Обработка в if let:

let val: Int??? = .some(.some(3))
if let first = val, let second = first, let number = second {
    	print(number) // 3
}

Вывод:
Optional — обычный enum, и вложенные уровни можно разворачивать постепенно. Создание собственного аналога помогает понять модель, но в коде пользуются стандартным.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Swift

    Swift

Ключевые слова

#optional

#enum

#nesting

#unwrap

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.