Выбор ответа Middle Ошибки обновлено

Что означает rethrows

Вопрос

Что означает func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]?

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

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

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

Коротко

Правильный ответ: Бросает, только если бросает переданное замыкание. rethrows говорит компилятору: собственных ошибок нет, только ошибки параметра-замыкания.

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

  1. Бросает, только если бросает переданное замыканиеправильный ответ
  2. Перехватывает ошибки замыкания и бросает их с другим типом
  3. Функция всегда бросает и требует try при любом вызове
  4. Повторяет вызов замыкания, если оно бросило ошибку

Разбор

rethrows говорит компилятору: собственных ошибок нет, только ошибки параметра-замыкания. Поэтому [1, 2].map { $0 * 2 } вызывается без try, а map { try parse($0) } требует try. Перехвата с изменением типа и повторов нет.

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

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