概述

  1. 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)
    }