Выбор ответа Junior Ошибки спрашивают часто обновлено
Порядок выполнения defer
Вопрос
В каком порядке выполнятся три defer в одной функции?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В обратном порядке при выходе из области. defer откладывает блок до выхода из текущей области (функции, цикла, do), по любому пути: return, throw, break.
Варианты ответа
- В порядке объявления, сразу после строки с
defer - В порядке объявления при выходе из функции
- Только последний, остальные перезаписываются
- В обратном порядке при выходе из областиправильный ответ
Разбор
defer откладывает блок до выхода из текущей области (функции, цикла, do), по любому пути: return, throw, break. Несколько defer выполняются стеком, последний объявленный первым. Так ресурсы освобождаются в обратном порядке захвата. Ни один не теряется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Ошибки»
- assert, precondition и fatalError
- Сопоставление ошибок в catch
- Отмена задачи и ошибки
- Как объявить свою ошибку в Swift
- Конвертация между Result и throws
- Задача на Swift: калькулятор в обратной польской записи с ошибками
- Задача на Swift: валидация формы регистрации
- Формы try в Swift