Замыкания в Swift | OTUS

Замыкания в Swift

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

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

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

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

1-1801-c60bd6.png

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

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

2-1801-e88600.png

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

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

3-1801-b6dc7a.png

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

4-1801-f94475.png

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

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

5-1801-0b05a2.png

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

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Запланируй обучение с выгодой!
Получи скидку 10% на все курсы ноября и декабря до 17.11 →