Scala 導覽

元組

語言

在 Scala 中,元組是一個包含固定數量的元素的值,每個元素都有自己的類型。元組是不可變的。

元組對於從方法傳回多個值特別方便。

可以如下建立一個包含兩個元素的元組

val ingredient = ("Sugar", 25)

這會建立一個包含一個 String 元素和一個 Int 元素的元組。

推論出來的 ingredient 類型為 (String, Int)

存取元素

存取元組元素的一種方法是它們的位置。個別元素的名稱為 _1_2,依此類推。

println(ingredient._1) // Sugar
println(ingredient._2) // 25

存取元組元素的一種方法是它們的位置。個別元素透過 tuple(0)tuple(1),依此類推來存取。

println(ingredient(0)) // Sugar
println(ingredient(1)) // 25

元組的樣式比對

也可以使用樣式比對來分解元組

val (name, quantity) = ingredient
println(name)     // Sugar
println(quantity) // 25

在此,name 的推論類型是 String,而 quantity 的推論類型是 Int

以下是模式比對元組的另一個範例

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 _ =>
}

或者,在 for 推導中

val numPairs = List((2, 5), (3, -7), (20, 56))
for ((a, b) <- numPairs) {
  println(a * b)
}
val numPairs = List((2, 5), (3, -7), (20, 56))
for (a, b) <- numPairs do
  println(a * b)

元組和類別案例

使用者有時可能會發現難以在元組和類別案例之間做出選擇。類別案例具有命名元素。這些名稱可以提升某些類型的程式碼的可讀性。在上述的行星範例中,我們可以定義 case class Planet(name: String, distance: Double),而不是使用元組。

更多資源

此頁面的貢獻者