Scala Tuple

Scala 集合Коллекции в Scala

Как и списки, кортежи неизменяемы, но в отличие от списков кортежи могут содержать элементы разных типов.

Значение кортежа формируется путём заключения отдельных значений в круглые скобки. Например:

val t = (1, 3.14, "Fred")  

В приведённом выше примере определяется три элемента кортежа с соответствующими типами [Int, Double, java.lang.String].

Кроме того, мы также можем определить его следующим образом:

val t = new Tuple3(1, 3.14, "Fred")

Фактический тип кортежа зависит от типов его элементов. Например, (99, "example") — это Tuple2[Int, String], а ('u', 'r', "the", 1, 4, "me") — Tuple6[Char, Char, String, Int, Int, String].

В настоящее время Scala поддерживает кортежи максимальной длиной 22. Для большей длины можно использовать коллекции или расширять кортежи.

Доступ к элементам кортежа можно получить по числовому индексу, как в следующем кортеже:

val t = (4,3,2,1)

Мы можем использовать t._1 для доступа к первому элементу и t._2 для доступа ко второму элементу, как показано ниже:

Пример

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)

      val sum = t._1 + t._2 + t._3 + t._4

      println( "Сумма элементов: "  + sum )
   }
}

После выполнения приведённого выше кода результат вывода:

$ scalac Test.scala 
$ scala Test
元素之和为: 10

Итерация по кортежу

Вы можете использоватьTuple.productIterator()метод для перебора и вывода всех элементов кортежа:

Пример

object Test {
   def main(args: Array[String]) {
      val t = (4,3,2,1)
     
      t.productIterator.foreach{ i =>println("Значение = " + i )}
   }
}

После выполнения приведённого выше кода результат вывода:

$ scalac Test.scala 
$ scala Test
Value = 4
Value = 3
Value = 2
Value = 1

Преобразование кортежа в строку

Вы можете использоватьTuple.toString()метод для объединения всех элементов кортежа в одну строку, как в примере ниже:

Пример

object Test {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)
     
      println("Объединенная строка: " + t.toString() )
   }
}

После выполнения приведённого выше кода результат вывода:

$ scalac Test.scala 
$ scala Test
连接后的字符串为: (1,hello,scala.Console$@4dd8dc3)

Обмен элементов

Вы можете использоватьTuple.swapметод для обмена элементов кортежа. Как в примере ниже:

Пример

object Test {
   def main(args: Array[String]) {
      val t = new Tuple2("www.google.com", "www.example.com")
     
      println("Кортеж после обмена: " + t.swap )
   }
}

После выполнения приведённого выше кода результат вывода:

$ scalac Test.scala 
$ scala Test
交换后的元组: (www.example.com,www.google.com)

Scala 集合Коллекции в Scala

Другие расширения