scala之旅-核心语言特性元组
Posted zhouwenyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala之旅-核心语言特性元组相关的知识,希望对你有一定的参考价值。
在Scala中,元组是一个包含了固定数量的元素的值,且每个元素都有自己的类型。元组是不可变的。
元组特别适用于一个方法返回多个值的场景。
一个二元元组可以按如下方式创建:
val ingredient = ("Sugar" , 25)
这个元组包含了一个 String 类型的元素和一个 Int 类型的元素。
这表示 ingredient的类型是 (String, Int) ,是 Tuple2[String, Int] 的简写。
为了表示元组,Scala中采用了一系列的类:Tuple2
,Tuple3
等,通过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之旅-核心语言特性元组的主要内容,如果未能解决你的问题,请参考以下文章
我的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.(代码片段