Что выведет код Middle Замыкания и захват обновлено
Что выведет Swift: счётчик на замыкании
Вопрос
Что выведет код?
func makeCounter() -> () -> Int {
var n = 0
return {
n += 1
return n
}
}
let a = makeCounter()
let b = a
let c = makeCounter()
print(a(), a(), b(), c())
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 1 2 3 1. Каждый вызов makeCounter создаёт свою переменную n в куче. b это та же ссылка на замыкание, что и a, поэтому счёт продолжается: 3. c новый счётчик.
Что выведет
1 2 3 1
Разбор
Каждый вызов makeCounter создаёт свою переменную n в куче. b это та же ссылка на замыкание, что и a, поэтому счёт продолжается: 3. c новый счётчик.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.