Latest web development tutorials

Scala 元組

Scala 集合 Scala集合

與列表一樣,元組也是不可變的,但與列表不同的是元組可以包含不同類型的元素。

元組的值是通過將單個的值包含在圓括號中構成的。 例如:

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

以上實例在元組中定義了三個元素,對應的類型分別為[Int, Double, java.lang.String]。

此外我們也可以使用以上方式來定義:

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

元組的實際類型取決於它的元素的類型,比如(99, "w3big") 是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 訪問第二個元素,如下所示:

object Test {
   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()方法來迭代輸出元組的所有元素:

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

執行以上代碼,輸出結果為:

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

元組轉為字符串

你可以使用Tuple.toString()方法將元組的所有元素組合成一個字符串,實例如下:

object Test {
   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方法來交換元組的元素。 如下實例:

object Test {
   def main(args: Array[String]) {
      val t = new Tuple2("www.google.com", "www.w3big.com")
      
      println("交换后的元组: " + t.swap )
   }
}

執行以上代碼,輸出結果為:

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

Scala 集合 Scala集合