0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: swift, замыкания, сlosures</p>
1
<p>Теги: swift, замыкания, сlosures</p>
2
<p><strong>Замыкания</strong>(<strong>сlosures</strong>) -- это самодостаточные блоки кода, которые можно неоднократно применять в разных частях программы, включая применение в качестве параметров в функциях. Рассмотрим их подробнее.</p>
2
<p><strong>Замыкания</strong>(<strong>сlosures</strong>) -- это самодостаточные блоки кода, которые можно неоднократно применять в разных частях программы, включая применение в качестве параметров в функциях. Рассмотрим их подробнее.</p>
3
<p>По большему счету, функции -- это частный случай замыканий. В языке программирования<strong>Swift</strong>замыкания бывают 3-х форм:</p>
3
<p>По большему счету, функции -- это частный случай замыканий. В языке программирования<strong>Swift</strong>замыкания бывают 3-х форм:</p>
4
<ul><li><strong>глобальные функции</strong>. Имеют имя и не сохраняют значения констант и внешних переменных;</li>
4
<ul><li><strong>глобальные функции</strong>. Имеют имя и не сохраняют значения констант и внешних переменных;</li>
5
<li><strong>вложенные функции</strong>. Имеют имя и сохраняют значения констант и внешних переменных;</li>
5
<li><strong>вложенные функции</strong>. Имеют имя и сохраняют значения констант и внешних переменных;</li>
6
<li><strong>замыкающие выражения (closure expressions)</strong>. Не имеют имени и могут сохранять значения констант и внешних переменных.</li>
6
<li><strong>замыкающие выражения (closure expressions)</strong>. Не имеют имени и могут сохранять значения констант и внешних переменных.</li>
7
</ul><p>В общем случае замыкающие выражения имеют следующий синтаксис:</p>
7
</ul><p>В общем случае замыкающие выражения имеют следующий синтаксис:</p>
8
<p>Если же замыкания не имеют параметров либо не возвращают никакого значения, то при определении замыкания соответствующие элементы могут опускаться.</p>
8
<p>Если же замыкания не имеют параметров либо не возвращают никакого значения, то при определении замыкания соответствующие элементы могут опускаться.</p>
9
<p>Точно так же, как переменная либо константа может представлять ссылку на функцию, они могут представлять ссылку и на<strong>замыкание</strong>:</p>
9
<p>Точно так же, как переменная либо константа может представлять ссылку на функцию, они могут представлять ссылку и на<strong>замыкание</strong>:</p>
10
<p>В нашем примере константе<strong>hello</strong>присваивается анонимная функция, состоящая из блока кода, где выполняются определенные действия. Данная функция не обладает именем, а вызвать ее мы можем лишь через константу<strong>hello</strong>.</p>
10
<p>В нашем примере константе<strong>hello</strong>присваивается анонимная функция, состоящая из блока кода, где выполняются определенные действия. Данная функция не обладает именем, а вызвать ее мы можем лишь через константу<strong>hello</strong>.</p>
11
<p>По сути, константа<strong>hello</strong>в нашем случае имеет тип ()->() либо ()-gt;Void:</p>
11
<p>По сути, константа<strong>hello</strong>в нашем случае имеет тип ()->() либо ()-gt;Void:</p>
12
<p>Дополнительно мы можем определить перечень параметров посредством ключевого слова<strong>in</strong>:</p>
12
<p>Дополнительно мы можем определить перечень параметров посредством ключевого слова<strong>in</strong>:</p>
13
<p>В нашем случае<strong>замыкание</strong>принимает 1 параметр --<strong>message</strong>, представляющий тип<strong>String</strong>. Перечень параметров указывается до ключевого слова<strong>in</strong>, ну а далее следуют инструкции функции.</p>
13
<p>В нашем случае<strong>замыкание</strong>принимает 1 параметр --<strong>message</strong>, представляющий тип<strong>String</strong>. Перечень параметров указывается до ключевого слова<strong>in</strong>, ну а далее следуют инструкции функции.</p>
14
<p>Кроме того, у нас есть возможность определить возвращаемое значение:</p>
14
<p>Кроме того, у нас есть возможность определить возвращаемое значение:</p>
15
<p><em>По материалам https://metanit.com/swift/tutorial/.</em></p>
15
<p><em>По материалам https://metanit.com/swift/tutorial/.</em></p>
16
16