Что выведет код Middle Замыкания и захват обновлено
Что выведет Swift: замыкания в for-in и while
Вопрос
Что выведет код?
var handlers: [() -> Void] = []
for i in 1...3 {
handlers.append { print(i, terminator: " ") }
}
var j = 0
while j < 3 {
j += 1
handlers.append { print(j, terminator: " ") }
}
handlers.forEach { $0() }
print()
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 1 2 3 3 3 3. В for-in у каждой итерации своя константа i.
Что выведет
1 2 3 3 3 3
Разбор
В for-in у каждой итерации своя константа i. В while все три замыкания захватили одну внешнюю переменную j, к моменту вызова она равна 3.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.