Типы Pair и Triple в Kotlin

Иногда данные используются в группах. Примером может быть пара координат (х, у) на 2D сетке. Аналогично набор координат на 3D сетке состоит из значений x, y и z. В Kotlin для таких данных используются типы Pair и Triple.

Содержание статьи

В других языках похожую функцию выполняет тип кортежей.

Типы Pair и Triple в Kotlin

Pair и Triple являются типами, которые представляют данные, состоящие из трех или двух значений любого типа. Если вам нужно больше трех значений, требуется использовать data class, который мы рассмотрим в будущих статьях.

Рассмотрим тип Pair. В качестве примера определим пару 2D координат, где значение каждой оси является целым числом типа Int:

Типом константы coordinates является Pair<Int, Int>. Тип значений внутри Pair, в данном случае является Int, разделяются запятыми и заключаются в <>. Код для создания Pair почти такой же, каждое значение разделено запятыми и заключено в круглые скобки.

Вывод типа также может автоматически понять, что это тип Pair:

Запись можно сделать более краткой, используя оператор to:

Аналогичным образом в Pair можно поместить значения типа Double:

Получить доступ к данным внутри Pair можно так:

Можно ссылаться на каждый элемент в Pair по его положению в паре, начиная с first. В этом примере x1 будет равен 2, а y1 будет равен 3.

В предыдущем примере может не сразу очевидно, что первое значение — это координата x, а второе значение — координата y. Это еще один пример того, почему при объявлении переменной важно давать переменным понятные названия.

Kotlin позволяет использовать объявление деструктуризации для отдельных частей Pair. Таким образом можно четко указать, что из себя представляет каждая часть. К примеру:

Здесь значения извлекаются из coordinates и присваиваются к х и у.

Triple работает так же, как и Pair, только вместо двух значений у нас теперь три.

Если вам нужно одновременно получить доступ к частям данных из Triple, как в примере выше, можно использовать более простой синтаксис:

Здесь объявляются три новые константы — x3, y3 и z3, им присваивается каждая часть из Triple. Код является эквивалентом следующему:

Если вам нужно проигнорировать определенный элемент из Pair или Triple, можно заменить соответствующую часть объявления подчеркиванием. К примеру, при выполнении 2D вычислений необходимо проигнорировать координату z из coordinates3D. Это делается следующим образом:

Эта строка кода объявляет только х4 и у4. С помощью специального символа _ игнорируется указанная часть.

Задания для проверки

  1. Объявите константу Triple, которая содержит три значения Int. Используйте ее для обозначения даты (месяц, день, год);
  2. Извлеките значения из Triple в три константы с названиями month, day и year;
  3. Через одну строку выведите значения месяца и года в две константы. Вам нужно будет использовать подчеркивание _, чтобы проигнорировать день;
  4. Так как значения внутри Pairs и Triple нельзя изменить, нужно извлечь из них значения, внести изменения, а затем создать новую Pair или Triple. Используя значения, извлеченные на третьем шаге, измените значение месяца и создайте новую Pair, содержащую измененный месяц вместе с не измененным годом.
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x