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 的推断类型为 Stringquantity 的推断类型为 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) 而不是使用元组。

更多资源

此页面的贡献者