0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: swift, сабскрипты, subscripts</p>
1
<p>Теги: swift, сабскрипты, subscripts</p>
2
<p>Классы, структуры и перечисления в языке программирования Swift могут определяться сабскриптами --<strong>subscripts</strong>. На практике их применяют для обеспечения доступа к элементам коллекции либо последовательности. В ряде других языков похожая концепция тоже существует -- это<strong>индексаторы</strong>. Что касается сабскриптов в Swift, то они дают возможность обращаться с объектом класса либо структурой как с отдельной коллекцией.</p>
2
<p>Классы, структуры и перечисления в языке программирования Swift могут определяться сабскриптами --<strong>subscripts</strong>. На практике их применяют для обеспечения доступа к элементам коллекции либо последовательности. В ряде других языков похожая концепция тоже существует -- это<strong>индексаторы</strong>. Что касается сабскриптов в Swift, то они дают возможность обращаться с объектом класса либо структурой как с отдельной коллекцией.</p>
3
<p>Чтобы определить сабскрипт в коде, используют соответствующее ключевое слово --<strong>subscript</strong>:</p>
3
<p>Чтобы определить сабскрипт в коде, используют соответствующее ключевое слово --<strong>subscript</strong>:</p>
4
<p>После subscript в скобках прописываются параметры, используемые для получения элементов. Довольно часто такие параметры представляют числовой индекс -- индекс, по которому нужно получить объект. Потом указывают тип элементов, с которыми происходит работа.</p>
4
<p>После subscript в скобках прописываются параметры, используемые для получения элементов. Довольно часто такие параметры представляют числовой индекс -- индекс, по которому нужно получить объект. Потом указывают тип элементов, с которыми происходит работа.</p>
5
<p>Сам по себе сабскрипт способен состоять из 2-х блоков: -<strong>get</strong>; -<strong>set</strong>.</p>
5
<p>Сам по себе сабскрипт способен состоять из 2-х блоков: -<strong>get</strong>; -<strong>set</strong>.</p>
6
<p><strong>Get</strong>осуществляет возврат элемента, а<strong>set</strong>устанавливает новое значение -- оно передается через<strong>newValue</strong>-параметр.</p>
6
<p><strong>Get</strong>осуществляет возврат элемента, а<strong>set</strong>устанавливает новое значение -- оно передается через<strong>newValue</strong>-параметр.</p>
7
<h2>Пример</h2>
7
<h2>Пример</h2>
8
<p>Создадим класс библиотеки. Соответственно, библиотека -- это некий набор книг. Таки образом, можно представить этот класс в качестве коллекции книг и применять сабскрипты, чтобы получать книги по индексу:</p>
8
<p>Создадим класс библиотеки. Соответственно, библиотека -- это некий набор книг. Таки образом, можно представить этот класс в качестве коллекции книг и применять сабскрипты, чтобы получать книги по индексу:</p>
9
<p>В данном случае сабскрипт выполняет работу с типом<strong>Book</strong>. При этом в блоке<strong>get</strong>осуществляется получение объекта<strong>Book</strong>из соответствующего массива<em>books</em><strong>по индексу</strong>. Тогда как в блоке<strong>set</strong>мы устанавливаем объект<strong>Book</strong>в массиве<em>books</em>.</p>
9
<p>В данном случае сабскрипт выполняет работу с типом<strong>Book</strong>. При этом в блоке<strong>get</strong>осуществляется получение объекта<strong>Book</strong>из соответствующего массива<em>books</em><strong>по индексу</strong>. Тогда как в блоке<strong>set</strong>мы устанавливаем объект<strong>Book</strong>в массиве<em>books</em>.</p>
10
<p>В результате, для получения необходимой книги можно обращаться к библиотеке, как к массиву, используя индекс:</p>
10
<p>В результате, для получения необходимой книги можно обращаться к библиотеке, как к массиву, используя индекс:</p>
11
<h2>Разновидности subscripts</h2>
11
<h2>Разновидности subscripts</h2>
12
<p>Осталось сказать, что существуют 2 типа сабскриптов: - поддерживающие чтение/запись (имеющие блоки get/set, как в вышеописанном примере); - предназначенные ТОЛЬКО для чтения (имеющие лишь блок get).</p>
12
<p>Осталось сказать, что существуют 2 типа сабскриптов: - поддерживающие чтение/запись (имеющие блоки get/set, как в вышеописанном примере); - предназначенные ТОЛЬКО для чтения (имеющие лишь блок get).</p>
13
<p>Чтобы применить subscript исключительно для чтения, давайте изменим класс библиотеки:</p>
13
<p>Чтобы применить subscript исключительно для чтения, давайте изменим класс библиотеки:</p>
14
<p><em>По материалам https://metanit.com/.</em></p>
14
<p><em>По материалам https://metanit.com/.</em></p>
15
15