HTML Diff
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;() либо ()-gt;Void:</p>
11 <p>По сути, константа<strong>hello</strong>в нашем случае имеет тип ()-&gt;() либо ()-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