Scala元組

2019-10-16 23:14:28

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]

元組是型別Tuple1Tuple2Tuple3等等。目前在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)