首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >6.scala元组

6.scala元组

作者头像
Spark学习技巧
发布2020-05-04 21:22:00
发布2020-05-04 21:22:00
8340
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

在 Scala 中,元组是一个可以容纳不同类型元素的类。元组是不可变的。

当我们需要从函数返回多个值时,元组会派上用场。

元组可以创建如下:

代码语言:javascript
复制
val ingredient = ("Sugar" , 25):Tuple2[String, Int]

这将创建一个包含一个 String 元素和一个 Int 元素的元组。

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

访问元素

使用下划线语法来访问元组中的元素。‘tuple._n’ 取出了第 n 个元素(假设有足够多元素)。

代码语言:javascript
复制
println(ingredient._1)
println(ingredient._2)

解构元组数据

Scala 元组也支持解构。

代码语言:javascript
复制
val (name, quantity) = ingredient
println(name)
println(quantity)

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

代码语言:javascript
复制
代码语言:javascript
复制
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....")    }      }  }
代码语言:javascript
复制
或者,在 ‘for’ 表达式中。
代码语言:javascript
复制
val numPairs = List((2, 5), (3, -7), (20, 56))
for ((a, b) <- numPairs) {
  println(a * b)  }

类型 Unit 的值 () 在概念上与类型 Tuple0 的值 () 相同。Tuple0 只能有一个值,因为它没有元素。

用户有时可能在元组和 case 类之间难以选择。通常,如果元素具有更多含义,则首选 case 类。

推荐阅读:

1.Scala类型层次结构

2.讲讲scala的类

3.scala的命名参数

4.scala默认参数值

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 访问元素
  • 解构元组数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档