前章:トレイト
- Scalaのタプルは、固定数の要素を含む値であり、各要素はそれぞれ固有の型を持ち不変で
// (String, Int)で推論されるタプル
val ingredient = ("Sugar", 25)要素へのアクセス
- 要素にアクセスする方法の一つに位置(他言語のインデックスのようなもの)を利用することができる
println(ingredient(0)) // Sugar
println(ingredient(1)) // 25タプルのパターンマッチング
- タプルはパターンマッチングを使って分解することもできる
// 左辺にパターンを書き、右辺を分解して束縛する
val (name, quantity) = ingredient
println(name) // Sugar
println(quantity) // 25
val numPairs = List((2, 5), (3, -7), (20, 56))
for (a, b) <- numPairs do
println(a * b)
// 10
// -21
// 1120
// 1要素目が"Earth"の時だけ2要素目を束縛して出力
val planets =
List(("Mercury", 57.9), ("Venus", 108.2), ("Earth", 149.6),
("Mars", 227.9), ("Jupiter", 778.3))
planets.foreach {
case ("Earth", distance) =>
println(s"Our planet is $distance million kilometers from the sun")
case _ =>
} タプルとケースクラス
- タプルもケースクラスも複数の値をまとめて1つの値として扱う点で似ているが、要素が名前を持つことで可読性が上がるのであれば、ケースクラスの使用する
タプルは無名で位置アクセスのみ