Scalaコレクション-タプル

Scalaタプルは、固定数のアイテムを組み合わせて、全体として渡すことができるようにします。配列やリストとは異なり、タプルはさまざまなタイプのオブジェクトを保持できますが、不変でもあります。

以下は、整数、文字列、およびコンソールを保持するタプルの例です。

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の上限があり、さらに必要な場合は、タプルではなくコレクションを使用できます。1 <= N <= 22であるTupleNタイプごとに、Scalaはいくつかの要素アクセスメソッドを定義します。次の定義が与えられた-

val t = (4,3,2,1)

タプルtの要素にアクセスするには、メソッドt._1を使用して最初の要素にアクセスし、t._2を使用して2番目の要素にアクセスします。たとえば、次の式はtのすべての要素の合計を計算します。

val sum = t._1 + t._2 + t._3 + t._4

タプルを使用して、List [Double]を受け取り、3要素のタプル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。このプログラムをコンパイルして実行するには、次のコマンドを使用します。

コマンド

\>scalac Demo.scala
\>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。このプログラムをコンパイルして実行するには、次のコマンドを使用します。

コマンド

\>scalac Demo.scala
\>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。このプログラムをコンパイルして実行するには、次のコマンドを使用します。

コマンド

\>scalac Demo.scala
\>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。このプログラムをコンパイルして実行するには、次のコマンドを使用します。

コマンド

\>scalac Demo.scala
\>scala Demo

出力

Swapped tuple: (hello,Scala)