Tuplas de Scala

Scala 集合Colecciones de Scala

Al igual que las listas, las tuplas son inmutables, pero a diferencia de las listas, las tuplas pueden contener elementos de diferentes tipos.

El valor de una tupla se construye encerrando valores individuales entre paréntesis. Por ejemplo:

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

En el ejemplo anterior se definen tres elementos en la tupla, cuyos tipos correspondientes son [Int, Double, java.lang.String].

Además, también podemos definirlas de la siguiente manera:

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

El tipo real de una tupla depende del tipo de sus elementos, por ejemplo (99, "ejemplo") es Tuple2[Int, String]. ('u', 'r', "the", 1, 4, "me") es Tuple6[Char, Char, String, Int, Int, String].

Actualmente Scala admite tuplas de hasta 22 elementos de longitud máxima. Para longitudes mayores, puedes usar colecciones o extender las tuplas.

Se puede acceder a los elementos de una tupla mediante índice numérico, como en la siguiente tupla:

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

Podemos usar t._1 para acceder al primer elemento, t._2 para acceder al segundo elemento, como se muestra a continuación:

Ejemplo

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

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

      println( "La suma de los elementos es: "  + sum )
   }
}

Al ejecutar el código anterior, el resultado es:

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

Iterar sobre tuplas

Puedes usarTuple.productIterator()método para iterar y generar todos los elementos de la tupla:

Ejemplo

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

Al ejecutar el código anterior, el resultado es:

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

Convertir tupla a cadena

Puedes usarTuple.toString()método para combinar todos los elementos de la tupla en una cadena, como en el siguiente ejemplo:

Ejemplo

object Test {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)
     
      println("La cadena resultante es: " + t.toString() )
   }
}

Al ejecutar el código anterior, el resultado es:

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

Intercambio de elementos

Puedes usarTuple.swapmétodo para intercambiar los elementos de la tupla. Como en el siguiente ejemplo:

Ejemplo

object Test {
   def main(args: Array[String]) {
      val t = new Tuple2("www.google.com", "www.example.com")
     
      println("La tupla después del intercambio: " + t.swap )
   }
}

Al ejecutar el código anterior, el resultado es:

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

Scala 集合Colecciones de Scala

Otras extensiones