Что выведет код 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 ошибок.