Видеокурсы по изучению языка программирования Swift. Подробнее

Замыкания

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Замыкания - это самодостаточные блоки с определенным функционалом, которые могут быть переданы и использованы в вашем коде. Замыкания в Swift похожи на блоки в C и Objective-C, и лямбды в других языках программирования.

Замыкания могут захватывать и хранить отношения для любых констант и переменных из контекста, в котором они объявлены. Эта процедура известна как заключение этих констант и переменных , отсюда и название "замыкание". Swift выполняет всю работу с управлением памятью при захвате за вас.

Заметка

Не волнуйтесь, если вы не знакомы с понятием "захвата"(capturing). Это объясняется более подробно ниже в главе Захват значений.

Глобальные и вложенные функции, которые были представлены в главе Функции, являются частным случаем замыканий. Замыкания принимают одно из трех форм:

  • Глобальные функции являются замыканиями, у которых есть имя и которые не захватывают никакие значения.
  • Вложенные функции являются замыканиями, у которых есть имя и которые могут захватывать значения из замыкающей функции.
  • Выражения замыкания являются безымянными замыканиями, написанные в облегченном синтаксисе, которые могут захватывать значения из их окружающего контекста.

Выражения замыкания в Swift имеют четкий, ясный, оптимизированный синтаксис в распространенных сценариях. Эти оптимизации включают:

  • Вывод типа параметра и возврат типа значения из контекста
  • Неявные возвращающиеся значения однострочных замыканий
  • Сокращенные имена параметров
  • Синтаксис последующих замыканий
Swift: 
3.0