Scala的模式匹配-基础使用(two)

21 阅读2分钟

内容:

1. Scala 中的模式匹配的基本格式;

2. 模式匹配的五种常见使用场景;

3. 隐藏的模式匹配。

高阶匹配之元组元素数量

前面的匹配都是精准匹配:变量和值是相等的。但是呢,scala中的模式匹配的规则是非常强大的,不一定是精准的匹配值,还可以根据元组的元素的个数来匹配。

高阶匹配之变量类型匹配

除了格式匹配之后,还可以对变量的类型进行匹配。

格式如下:

屏幕截图 2025-12-22 145031.png

如果变量名没有被使用到,可以使用_代替。 例如: _:Int =>

需求:
1.定义一个变量为Any类型,然后分别给它赋值不同的类型的数据。

2.对这个变量做模式匹配

代码完善:

def processValue(value: Any): Unit =

value match {

    case i: Int => println(s"这是一个整数:$i")

    case d: Double => println(s"这是一个双精度浮点数:$d")

    case s: String => println(s"这是一个字符串:$s")

    case b: Boolean => println(s"这是一个布尔值:$b")

    case _ => println("这是其他类型")

}  
}  
matchType(5)  
matchType("Hello")

高阶匹配之匹配元素特征

模式匹配还可以根据数组元素的个数,元素的特征来匹配。

例如如下的格式:

数组 match {

case Array(1,x,y) => 匹配到数组,长度为3,且第一个元素为1

case Array(0) =>匹配到数组:长度为1,且只有一个元素0

case Array(1,_*) =>匹配到数组:长度为n,第一个元素为1

case _ => 其他

}

高阶匹配之匹配案例类

模式匹配还根据案例类的不同,匹配不同的案例类和其中的字段信息。例如格式

对象 match {

case 样例类类型1(字段1,字段2)=> 表达式

case 样例类类型2(字段1,字段2,字段3)=> 表达式

case _ => 其他

}

注意:样例类1中的字段个数要与之对应。

代码案例如下:

屏幕截图 2025-12-22 150503.png

案例如下:

屏幕截图 2025-12-22 153724.png

变量声明中的模式匹配

需求:现在有一个数组Array(1,2,3,4),我希望能定义三个变量,它们的值分别是数组中的第1,2,3个元素的值。

基础实现:

其中: _*表示多个其他的元素值。

代码如下:

屏幕截图 2025-12-22 154531.png