• Scala 元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递
  • 与数组或列表不同,元组可以容纳不同类型的对象,但它们也是不可变的

一、定义

一个存储了 整型、字符串、数组的元组

scala> val t = (1, "string", new Array[String](2))
t: (Int, String, Array[String]) = (1,string,Array(null, null))

上面的完整写法

scala> val t = Tuple3(1, "string", new Array[String](2))
t: (Int, String, Array[String]) = (1,string,Array(null, null))

元组的实际类型取决于它包含的数量和元素以及这些元素的类型。
因此,(12,"Hello") 的类型是 Tuple2 [Int,String]

元组是类型 Tuple1,Tuple2,Tuple3 ... Tuple22
目前在 Scala 中只能有 221 <= N <= 22)个上限
如果您需要更多个元素,那么可以使用集合而不是元组。

二、访问

scala> val t = Tuple3(1, "string", new Array[String](2))
t: (Int, String, Array[String]) = (1,string,Array(null, null))

scala> t._1
res0: Int = 1

scala> t._2
res1: String = string

scala> t._3
res2: Array[String] = Array(null, null)

要访问元组t的元素,可以使用t._1方法访问第一个元素,t._2方法访问第二个元素,依此类推。

三、迭代

object TupleApp {
  def main(args: Array[String]): Unit = {
    val t = Tuple3(1, "string", "3")
    t.productIterator.foreach( i => println(i.toString))
  }
}

输出

1
string
3

四、其它操作

转字符串

scala> t.toString
res8: String = (1,string,[Ljava.lang.String;@c269425)

两个元素时,交换

scala> val t = Tuple2(1, 2)
t: (Int, Int) = (1,2)

scala> t.swap
res9: (Int, Int) = (2,1)