Иногда данные используются в группах. Примером может быть пара координат (х, у) на 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 3 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
13 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
trackback
8 дней назад

acheter kamagra livraison le lendemain nourrie ex

kamagra uk avez-vous besoin d’une ordonnance

trackback
8 дней назад

enclomiphene order

ordering enclomiphene cheap united states

trackback
8 дней назад

order androxal canada no prescription

cheapest buy androxal generic canada no prescription

trackback
8 дней назад

buy cheap dutasteride buy safely online

cheapest buy dutasteride generic good

trackback
8 дней назад

get flexeril cyclobenzaprine cost usa

buying flexeril cyclobenzaprine generic how effective

trackback
8 дней назад

how to order gabapentin generic gabapentin

cheap gabapentin uk in store

trackback
8 дней назад

get itraconazole uk in store

cheapest buy itraconazole generic uae

trackback
8 дней назад

buying fildena purchase online safely

get fildena generic usa

trackback
8 дней назад

get staxyn buy online usa

buy staxyn without prescription pay cod

trackback
8 дней назад

get avodart lowest price

ordering avodart generic from india

trackback
8 дней назад

order rifaximin generic version

ordering rifaximin cost of tablet

trackback
8 дней назад

buy xifaxan usa online pharmacy

cheap xifaxan generic overnight shipping

trackback
7 дней назад

koupit kamagra přes noc dodání

ne obecný kamagra bez lékařského předpisu

13
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x