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")
。
有了元组,将元素组合在一起将不再别扭和麻烦,代码将减少很多不必要的冗余,更精简易懂易用。