欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala基础教程6 -- 元组

程序员文章站 2022-06-14 18:56:47
...

6 元组

在Scala中,元组是一个可以容纳不同类型元素的类。元组是不可变的。
当我们必须从函数返回多个值时,元组会派上用场。
元组可以创建为:

val ingredient = ("Sugar" , 25):Tuple2[String, Int]

Scala中的元组是一系列类:Tuple2,Tuple3等,直到Tuple22。因此,当我们创建一个包含n个元素(n位于2和22之间)的元组时,Scala基本上实例化了该组中的一个相应类,并使用组成元素的类型进行参数化。例如,成分的类型为Tuple2 [String,Int]。

6.1 访问元素

使用下划线语法访问元组元素。'tuple._n’给出了第n个元素(假设有很多元素)。

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

6.2 解构元组数据

Scala元组也支持解构。

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

元组解构也可用于模式匹配。

val planetDistanceFromSun = List(("Mercury", 57.9), ("Venus", 108.2), ("Earth", 149.6 ), ("Mars", 227.9), ("Jupiter", 778.3))
planetDistanceFromSun.foreach{ tuple => {
  tuple match {
      case ("Mercury", distance) => println(s"Mercury is $distance millions km far from Sun") 
      case p if(p._1 == "Venus") => println(s"Venus is ${p._2} millions km far from Sun") 
      case p if(p._1 == "Earth") => println(s"Blue planet is ${p._2} millions km far from Sun") 
      case _ => println("Too far....") 
    }   
  }
}

或者,在’for’中。

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

Unit类型的value()在概念上与Tuple0类型的value()相同。这种类型只能有一个值,因为它没有元素。
用户有时可能难以在元组和案例类之间进行选择。通常,如果元素具有更多含义,则首选案例类。

相关标签: Scala tuple