Сабскрипты в Swift
Классы, структуры и перечисления в языке программирования Swift могут определяться сабскриптами -- subscripts. На практике их применяют для обеспечения доступа к элементам коллекции либо последовательности. В ряде других языков похожая концепция тоже существует -- это индексаторы. Что касается сабскриптов в Swift, то они дают возможность обращаться с объектом класса либо структурой как с отдельной коллекцией.
Чтобы определить сабскрипт в коде, используют соответствующее ключевое слово -- subscript:
После subscript в скобках прописываются параметры, используемые для получения элементов. Довольно часто такие параметры представляют числовой индекс -- индекс, по которому нужно получить объект. Потом указывают тип элементов, с которыми происходит работа.
Сам по себе сабскрипт способен состоять из 2-х блоков: - get; - set.
Get осуществляет возврат элемента, а set устанавливает новое значение -- оно передается через newValue-параметр.
Пример
Создадим класс библиотеки. Соответственно, библиотека -- это некий набор книг. Таки образом, можно представить этот класс в качестве коллекции книг и применять сабскрипты, чтобы получать книги по индексу:
В данном случае сабскрипт выполняет работу с типом Book. При этом в блоке get осуществляется получение объекта Book из соответствующего массива books по индексу. Тогда как в блоке set мы устанавливаем объект Book в массиве books.
В результате, для получения необходимой книги можно обращаться к библиотеке, как к массиву, используя индекс:
Разновидности subscripts
Осталось сказать, что существуют 2 типа сабскриптов: - поддерживающие чтение/запись (имеющие блоки get/set, как в вышеописанном примере); - предназначенные ТОЛЬКО для чтения (имеющие лишь блок get).
Чтобы применить subscript исключительно для чтения, давайте изменим класс библиотеки:
По материалам https://metanit.com/.