DevPrep

Все темы › Язык Swift

Что такое замыкание и что значит @escaping?

Middle PRO

Суть

Замыкание — самодостаточный блок кода, который можно передать как значение и который захватывает переменные из окружающего контекста. Функции и методы — тоже замыкания. Захват по умолчанию идёт по ссылке: замыкание видит актуальное значение переменной, а не копию на момент создания; capture list [x] делает копию.

var counter = 0
let byReference = { counter }          // захват переменной (по ссылке)
let byValue = { [counter] in counter } // capture list: копия в момент создания
counter = 5
print(byReference(), byValue())        // 5 0

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store