2. Узнайте о парах и тройках

В этом задании вы узнаете о парах и тройках, а также о том, как их использовать. Пары и тройки — это готовые классы данных для 2 или 3 общих элементов. Это может быть полезно, например, для того, чтобы функция возвращала более одного значения.

Предположим, у вас есть Listсписок рыб и функция isFreshWater()для проверки, являются ли эти рыбы пресноводными или морскими. Давайте воспользуемся функцией List.partition(), которая возвращает два списка на основе условия. Один список будет содержать элементы, для которых условие выполняется true, а другой список — элементы, для которых условие выполняется false.

val twoLists = fish.partition { isFreshWater(it) }
println("freshwater: ${twoLists.first}")
println("saltwater: ${twoLists.second}")

Шаг 1: Составьте несколько пар и тройек.

  1. Откройте REPL ( Инструменты > Kotlin > Kotlin REPL ).
  2. Создайте пару, связав оборудование с его назначением, а затем распечатайте значения. Пару можно создать, используя выражение, соединяющее два значения, например, две строки, с помощью ключевого слова `<value>` to, а затем используя `<value>` .firstили ` .second<value>` для ссылки на каждое значение.
val equipment = "fish net" to "catching fish"
println("${equipment.first} used for ${equipment.second}")
⇒ fish net used for catching fish
  1. Создайте тройку и распечатайте её с помощью функции `println` toString(), затем преобразуйте её в список с помощью функции `list` toList(). Тройка создаётся с помощью функции `println` Triple()с тремя значениями. Используйте `println` .first, `println` .secondи .third`list` для обозначения каждого значения.
val numbers = Triple(6, 9, 42)
println(numbers.toString())
println(numbers.toList())
⇒ (6, 9, 42)
[6, 9, 42]

В приведенных выше примерах для всех частей пары или тройки используется один и тот же тип, но это не обязательно. Части могут представлять собой, например, строку, число или список — или даже другую пару или тройку.

  1. Создайте пару, где первая часть пары сама по себе является парой.
val equipment2 = ("fish net" to "catching fish") to "equipment"
println("${equipment2.first} is ${equipment2.second}\n")
println("${equipment2.first.second}")
⇒ (fish net, catching fish) is equipment
⇒ catching fish

Шаг 2: Деструктурируйте некоторые пары и тройки.

Разделение пар и троек на части называется деструктуризацией . Присвойте пару или тройку соответствующему количеству переменных, и Kotlin присвоит значение каждой части в порядке их следования.

  1. Деструктурируйте пару и выведите значения.
val equipment = "fish net" to "catching fish"
val (tool, use) = equipment
println("$tool is used for $use")
⇒ fish net is used for catching fish
  1. Деструктурируйте тройку и выведите значения.
val numbers = Triple(6, 9, 42)
val (n1, n2, n3) = numbers
println("$n1 $n2 $n3")
⇒ 6 9 42

Обратите внимание, что деструктуризация пар и троек работает так же, как и с классами данных, что было рассмотрено в предыдущем практическом занятии.


Последнее изменение: Воскресенье, 5 апреля 2026, 14:14