Выбор ответа Junior Замыкания и захват спрашивают часто обновлено

Список захвата замыкания

Вопрос

Чем { [count] in print(count) } отличается от { print(count) } для var count?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Список захвата копирует значение count при создании замыкания. Без списка замыкание видит текущее значение переменной в момент вызова. [count] делает константную копию в момент создания.

Варианты ответа

  1. Ничем, это лишь стиль: оба варианта видят текущее значение count
  2. Список захвата копирует значение count при создании замыканияправильный ответ
  3. Список захвата делает count слабой ссылкой внутри замыкания
  4. Список захвата запрещает менять count снаружи после создания

Разбор

Без списка замыкание видит текущее значение переменной в момент вызова. [count] делает константную копию в момент создания. Слабым захват становится только с weak, и это касается ссылок на классы. Менять исходную переменную снаружи по-прежнему можно, просто замыкание этого не увидит.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.