Scala Tuple
Как и списки, кортежи неизменяемы, но в отличие от списков кортежи могут содержать элементы разных типов.
Значение кортежа формируется путём заключения отдельных значений в круглые скобки. Например:
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 для доступа ко второму элементу, как показано ниже:
Пример
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()метод для перебора и вывода всех элементов кортежа:
Пример
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()метод для объединения всех элементов кортежа в одну строку, как в примере ниже:
Пример
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метод для обмена элементов кортежа. Как в примере ниже:
Пример
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