Scala元組將固定數量的專案組合在一起,以便它們可以作為一個整體傳遞。 與陣列或列表不同,元組可以容納不同型別的物件,但它們也是不可變的。
以下是一個存有整數,字串和控制台(console
)的元組的範例。
val t = (1, "hello", Console)
上面是以下語法的簡寫 -
val t = new Tuple3(1, "hello", Console)
元組的實際型別取決於它包含的數量和元素以及這些元素的型別。 因此,(99,"Luftballons")
的型別是Tuple2 [Int,String]
。 ('u','r',「the」,1,4,"me")
是Tuple6 [Char,Char,String,Int,Int,String]
。
元組是型別Tuple1
,Tuple2
,Tuple3
等等。目前在Scala中只能有22
個上限,如果您需要更多個元素,那麼可以使用集合而不是元組。 對於每個TupleN
型別,其中上限為1 <= N <= 22
,Scala定義了許多元素存取方法。給定以下定義 -
val t = (4,3,2,1)
要存取元組t
的元素,可以使用t._1
方法存取第一個元素,t._2
方法存取第二個元素,依此類推。 例如,以下表示式計算t
的所有元素的總和 -
val sum = t._1 + t._2 + t._3 + t._4
可以使用Tuple
以及採用List [Double]
來編寫一個方法,並返回在三元組元組Tuple3 [Int,Double,Double]
中返回的計數,總和和平方和。它們也可用於將資料值列表作為並行程式設計中的參與者之間的訊息傳遞。
請嘗試以下範例程式。 它顯示了如何使用元組。
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
val sum = t._1 + t._2 + t._3 + t._4
println( "Sum of elements: " + sum )
}
}
將上述程式儲存在原始檔:Demo.scala中,使用以下命令編譯和執行此程式。
D:\>scalac Demo.scala
D:\>scala Demo
Sum of elements: 10
可以使用Tuple.productIterator()
方法遍歷元組的所有元素。
嘗試以下範例程式來遍歷元組。
範例
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
t.productIterator.foreach{ i =>println("Value = " + i )}
}
}
將上述程式儲存在原始檔:Demo.scala中,使用以下命令編譯和執行此程式。
D:\>scalac Demo.scala
D:\>scala Demo
Value = 4
Value = 3
Value = 2
Value = 1
可以使用Tuple.toString()
方法將元組的所有元素連線成字串。嘗試以下範例程式轉換為String
。
以下是將元組轉換為字串的例子 -
object Demo {
def main(args: Array[String]) {
val t = new Tuple3(1, "hello", Console)
println("Concatenated String: " + t.toString() )
}
}
將上述程式儲存在原始檔:Demo.scala中,使用以下命令編譯和執行此程式。
D:\>scalac Demo.scala
D:\>scala Demo
Concatenated String: (1,hello,scala.Console$@281acd47)
可以使用Tuple.swap
方法交換Tuple2
中的元素。
嘗試以下範例程式來交換元素。
object Demo {
def main(args: Array[String]) {
val t = new Tuple2("Scala", "hello")
println("Swapped Tuple: " + t.swap )
}
}
將上述程式儲存在原始檔:Demo.scala中,使用以下命令編譯和執行此程式。
D:\>scalac Demo.scala
D:\>scala Demo
Swapped tuple: (hello,Scala)