Scala-tuples
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)