Замыкания в Swift

Замыкания (сlosures) -- это самодостаточные блоки кода, которые можно неоднократно применять в разных частях программы, включая применение в качестве параметров в функциях. Рассмотрим их подробнее.

По большему счету, функции -- это частный случай замыканий. В языке программирования Swift замыкания бывают 3-х форм:

  • глобальные функции. Имеют имя и не сохраняют значения констант и внешних переменных;
  • вложенные функции. Имеют имя и сохраняют значения констант и внешних переменных;
  • замыкающие выражения (closure expressions). Не имеют имени и могут сохранять значения констант и внешних переменных.

В общем случае замыкающие выражения имеют следующий синтаксис:

Если же замыкания не имеют параметров либо не возвращают никакого значения, то при определении замыкания соответствующие элементы могут опускаться.

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

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

По сути, константа hello в нашем случае имеет тип ()->() либо ()-gt;Void:

Дополнительно мы можем определить перечень параметров посредством ключевого слова in:

В нашем случае замыкание принимает 1 параметр -- message, представляющий тип String. Перечень параметров указывается до ключевого слова in, ну а далее следуют инструкции функции.

Кроме того, у нас есть возможность определить возвращаемое значение:

По материалам https://metanit.com/swift/tutorial/.