Scala-tuples

提供:Dev Guides
移動先:案内検索

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

Tupleを使用して、List [Double]を取り、3要素のTuple、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()*メソッドを使用して、Tupleのすべての要素を反復処理できます。

次のサンプルプログラムを試して、タプルを反復処理してください。

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()*メソッドを使用して、タプルのすべての要素を文字列に連結できます。 次のプログラム例を試して、文字列に変換してください。

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)