Что выведет код Junior Замыкания и захват спрашивают часто обновлено
Что выведет Swift: захват по ссылке и список захвата
Вопрос
Что выведет код?
var x = 10
let byRef = { print("ref", x) }
let byValue = { [x] in print("value", x) }
x = 20
byRef()
byValue()
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: ref 20, value 10. Первое замыкание захватило переменную и видит её новое значение.
Что выведет
ref 20
value 10
Разбор
Первое замыкание захватило переменную и видит её новое значение. Второе по списку захвата скопировало x при создании.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.