scala之旅-核心语言特性元组

Posted zhouwenyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala之旅-核心语言特性元组相关的知识,希望对你有一定的参考价值。

在Scala中,元组是一个包含了固定数量的元素的值,且每个元素都有自己的类型。元组是不可变的。

元组特别适用于一个方法返回多个值的场景。

一个二元元组可以按如下方式创建:

val ingredient = ("Sugar" , 25)

这个元组包含了一个 String 类型的元素和一个 Int 类型的元素。

这表示 ingredient的类型是 (String, Int) ,是 Tuple2[String, Int] 的简写。

为了表示元组,Scala中采用了一系列的类:Tuple2Tuple3等,通过Tuple22每个类具有与元素一样多的类型参数。

获取元组元素内容

一种方式访问元组元素内容是通过元素的下标。各个元素的获取可以通过 _1_2 等

println(ingredient._1) // Sugar
println(ingredient._2) // 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)
}

元组和case类

用户有的时候可能发现很难在case类和元组中去做一个选择。case 类是有命名的元素。这些命名可以在有些代码上增加可读性。在上面的例子中,相对于planets元组列表,我们更推荐定义一个case 类Planet(name: String, distance: Double) 列表

以上是关于scala之旅-核心语言特性元组的主要内容,如果未能解决你的问题,请参考以下文章

Scala核心编程_第09章 面向对象编程(高级特性)

Scala核心编程_第09章 面向对象编程(高级特性)

详解 Scala 模式匹配

scala与python区别都有哪些

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段