码迷,mamicode.com
首页 > 编程语言 > 详细

scala之旅-核心语言特性【元组】(八)

时间:2020-10-24 11:54:27      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:foreach   拆分   mars   例子   访问   rom   方式   返回   内容   

在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之旅-核心语言特性【元组】(八)

标签:foreach   拆分   mars   例子   访问   rom   方式   返回   内容   

原文地址:https://www.cnblogs.com/zhouwenyang/p/13862622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!