HTML Diff
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