概述
scala模式匹配可以对集合进行精确的匹配,例如匹配只有两个元素的、且第一个元素为0的数组。
注意.只能匹配有顺序的集合
1.匹配第一个元素是1,第二个元素是2,并且长度是4,不需要匹配的位置就用”_”这个占位符代替
val arr = Array(1, 2, 20, 10)
arr match {
case Array(1, 2, _, _) => println("匹配上了")
}
2.定义四个变量,这样的话,就相当于只要长度匹配就可以了,并且可以输出占位符a的变量
val arr = Array(1, 2, 20, 10)
arr match {
case Array(a, b, c, d) => println(a) //输出: 1
}
3.只匹配前两个,后面不管有多少个,都不管
用 _*
val arr = Array(1, 2, 20, 10)
arr match {
case Array(1, 2, _*) =>
println("匹配上了")
}
4.获取后面的值
除了前两个值,后面的都获取到, 可以定义一个变量,比如说定义一个abc变量, 然后 abc@_* ,获取的集合是Vector类型的,你可以转成List或者Set都可以.
案例1
val arr = Array(1, 2, 20, 10, 10)
arr match {
case Array(1, 2, abc@_*) =>
println(abc.toList) //输出: List(20, 10, 10)
}
案例2
val arr = Array(1, 2, 10, 10)
arr match {
case Array(1, 2, abc@_*) =>
println(abc.toList) //输出: List(10, 10)
}