scala之元组

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

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

元组可以创建如下:

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

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

访问元素

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

println(ingredient._1) // Sugar

println(ingredient._2) // 25

解构元组数据

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 {
    //distance是随意定义的,但是后面的占位符就要使用此变量名
      case ("Mercury", distance) => println(s"Mercury is $distance millions km far from Sun")
     
       /* 如果访问的是元组;s后面的占位符要使用${变量名._2} */
      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 的值 () 在概念上与类型 Tuple0 的值 () 相同。 Tuple0 只能有一个值,因为它没有元素。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值