元组(Tuple)是一个异构、不可变的有序容器。元组存在的意义只是作为一个容纳多个值的容器,这可以免去创建那些简单的主要用于承载数据的类的麻烦.用户有时可能在元组和 case 类之间难以选择,通常,如果元素具有更多含义,则首选 case 类。
元组创建
可以通过三种方式创建一个元组:
- 通过用逗号分隔的值写入值,并用一对括号括起来
1 | scala> val t = (1, 1.2, 'h', "hello") |
- 通过
Tuplen
类创建元组对象:
1 | scala> val t3 = Tuple3(1, 1.2, "hello") |
- 通过使用关系运算符
->
创建二元组:
1 | scala> val t = 'a' -> 1 |
Scala 中的元组包含一系列类:Tuple2、Tuple3 ... Tuple22
,目前 Scala 支持的元组最大长度为 22。当我们创建一个包含 n 个元素(n 位于 2 和 22 之间)的元组时,Scala 基本上就是从上述的一组类中实例化一个相对应的类,使用组成元素的类型进行参数化;对于更大长度你可以使用集合,或者扩展元组。
元组操作
访问元素
使用下划线语法 tuple._n
可以取出第 n 个元素(假设有足够多元素):
1 | scala> t3._2 |
解构元组
Scala 元组也支持解构:
1 | scala> val (a, b, c) = t3 |
元组解构也可用于模式匹配:
1 | val planetDistanceFromSun = List(("Mercury", 57.9), ("Venus", 108.2), ("Earth", 149.6 ), ("Mars", 227.9), ("Jupiter", 778.3)) |
迭代元组
元组无法直接进行迭代,但可以通过Tuple.productIterator() 方法来迭代:
1 | scala> t3.productIterator.foreach{ i => println("Value = " + i )} |