Какой результат будет напечатан

Будет напечатано Swift: capture list [language] сохраняет значение строки при создании замыкания.

Короткий ответ

Что ответить на собеседовании

Будет напечатано Swift: capture list [language] сохраняет значение строки при создании замыкания.

Подробный разбор

Ответ с пояснениями

Условие

var language = "Swift"

let code = { [language] in
    print(language)
}

language = "Obj-C"
code()

Ответ

Будет напечатано Swift: capture list [language] сохраняет значение строки при создании замыкания.

Последующее присваивание language = "Obj-C" изменяет внешнюю переменную, но не сохранённую константу захвата. Поэтому вызов code читает старое значение Swift. Если удалить capture list, замыкание обратится к текущему значению внешней изменяемой переменной и напечатает Obj-C. String является типом-значением; возможное внутреннее разделение буфера не меняет наблюдаемый результат.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее