Выбор ответа Junior Опционалы спрашивают часто обновлено

compactMap и опционалы

Вопрос

Что вернёт ["1", "x", "3"].compactMap { Int($0) }?

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

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

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

Коротко

Правильный ответ: [1, 3]. compactMap вызывает замыкание для каждого элемента и отбрасывает nil, а остальные значения распаковывает.

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

  1. [1, nil, 3]
  2. [1, 3]правильный ответ
  3. [Optional(1), Optional(3)]
  4. Ничего: код упадёт на "x"

Разбор

compactMap вызывает замыкание для каждого элемента и отбрасывает nil, а остальные значения распаковывает. Массив с nil вернул бы map. Падения нет: Int("x") просто возвращает nil.

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

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

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