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)