Scala 元组Tuple学习

元组是Scala提供的一种特殊的数据结构,或者说是一块语法糖,它允许多个不同类型的元素组合在一起被使用,如下所示:

val tup = (1, 3.14, "元组", true)


这是一个四元组,由4个元素组成。 Scala目前的版本支持最多22元组。一元组类是存在的,但没有对应的内建语法,所以单纯的用括号把一个值围起来没什么卵用。零元组也是存在的,就是Unit了。

元组有什么用?请设想,有一个函数,返回一个类Weather,然后有一天,老板让你多返回些信息,比如有没有雾霾,能不能外出,而你没有修改Weather的权限,怎么办?通常的办法是,再建个新类,把Weather和新信息封进去。在Scala里,不需要那么麻烦, 交给元组就好了,把原来的Weather和新的信息用括号包起来,So easy!

返回来的元组要怎么使用?同样很简单,有两种方式,以最开始给的四元组为例,第一种方式,使用索引:

val tup = (1, 3.14, "元组", true)
println(tup._1)
println(tup._4)


得到的输出会是这样的:

1
true
tup: (Int, Double, String, Boolean) = (1,3.14,元组,true)


注意:元组的索引是从1开始的

第二种方式是类似于具名参数一样,给每个元素起个名字:

val (length, width, height) = (1.3, 0.7, 1.8)


这样定义之后单独使用length、width、height都没有问题。

元组还有一种特定用法,当是二元组时,可以简单定义成:1 -> "one",等效于(1, "one")。

有了元组,将元素组合在一起将不再别扭和麻烦,代码将减少很多不必要的冗余,更精简易懂易用。

猜你喜欢

转载自forlan.iteye.com/blog/2369685