6.1 tuple-元组
元组就是不同类型的值的聚集,英文名称为tuple。映射是键值对的集合,它只是元组的最简单形态。元组的值是通过将单个的值包含在圆括号中构成的,其中值可以是任意类型。
元组取值的方法,用_下滑线+下标进行取值,有一点需要注意,元组取值是从1开始,而不是像数组,从0开始。通常,使用模式匹配来获取元组里面的元素。
一般元组主要用于函数中需要返回的值较多,且类型不一的情况,例如StringOps的partition方法,返回的是一对字符串,分别包含了满足某个条件和不满足条件的字符:
“New York”.partition(_.isUpper) // 输出 (”NY”, “ew ork”),即获取字符串中的大写字母以及非大写字母分别输出
object TupleTest {
def main(args : Array[String]) : Unit = {
val tuple = (1, 2, 3.14, "hello", "world")
val third = tuple._3
println(third)
val (first, second, thirda, fourth, fifth) = tuple
println(first)
val (f, s, _, _, _) = tuple
println(tuple._2)
}
}
6.2 Zip操作
使用元组是为了把多个值绑在一起,以便能够一起处理,通常也可以用zip方法来完成,例如:
val symbols = Array(“<“, “-“, “>”)
val counts = Array(2, 10, 2)
val pairs = symbols.zip(counts)
输出对偶的数组:
Array((“<“, 2), (“-“, 10), (“>”, 2)),详见示例:
object ZipTest {
def main(args : Array[String]) : Unit = {
val symbole = Array("[", "*", "]")
val counts = Array(2, 5, 3)
val pairs = symbole.zip(counts)
for((x, y) <- pairs) println(x*y)
}
}
输出结果:[[*****]]]