Что выведет код Middle Ошибки спрашивают часто обновлено
Что выведет Swift: defer и возвращаемое значение
Вопрос
Что выведет код?
func work() -> Int {
var x = 1
defer { print("defer 1, x =", x) }
defer {
x += 10
print("defer 2")
}
x = 5
return x
}
print("result", work())
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: defer 2, defer 1, x = 15, result 5. Возвращаемое значение вычисляется до выполнения defer: функция вернёт 5.
Что выведет
defer 2
defer 1, x = 15
result 5
Разбор
Возвращаемое значение вычисляется до выполнения defer: функция вернёт 5. Затем defer выполняются в обратном порядке: второй увеличивает x до 15, первый печатает 15. И только потом вызывающий печатает результат.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.