Выбор ответа Middle Опционалы обновлено

map и flatMap у Optional

Вопрос

Какой тип у Optional("42").flatMap { Int($0) }?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Int? Optional.map применяет замыкание к содержимому: замыкание Int($0) возвращает Int?, и map дал бы Int??. flatMap ожидает замыкание, возвращающее опционал, и не добавляет лишний уровень, поэтому Int?.

Варианты ответа

  1. Int??
  2. [Int]
  3. Int?правильный ответ
  4. Int

Разбор

Optional.map применяет замыкание к содержимому: замыкание Int($0) возвращает Int?, и map дал бы Int??. flatMap ожидает замыкание, возвращающее опционал, и не добавляет лишний уровень, поэтому Int?. Массив получается от flatMap/compactMap у последовательностей, а не у Optional.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме