Scalaタプル

Scala 集合Scalaコレクション

リストと同様、タプルも不変ですが、リストとは異なり、タプルは異なる型の要素を含むことができます。

タプルの値は、単一の値を丸括弧で囲むことで構成されます。例:

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

上記の例では、タプルに3つの要素を定義しており、対応する型はそれぞれ[Int, Double, java.lang.String]です。

さらに、次の方法でも定義できます:

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

タプルの実際の型は要素の型に依存します。例えば、(99, "サンプル") は 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 を使用して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()メソッドでタプルのすべての要素を1つの文字列に結合できます。例は次のとおりです:

例

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.example.com")
     
      println("交換後のタプル: " + t.swap )
   }
}

上記のコードを実行すると、出力結果は次のようになります:

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

Scala 集合Scalaコレクション

その他の拡張