版权声明:Collected by Bro_Rabbit only for study https://blog.csdn.net/weixin_38240095/article/details/84146456
一、概述
- 模式匹配,类似Java的switch-case语句。
- 但Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配,对Array和List的元素进行匹配,对case class(即样例类)进行匹配,甚至对有无值(Option)进行匹配
二、基础语法
-
定义方式:四个要素
变量 match {case 值 => …} -
如果值为下划线_,则代表不满足以上所有情况的默认情况如何处理 [保底]
-
match case中,只要一个case分支满足处理后,不会继续判断下一case分支 [没有break]
-
案例
(1) 基本使用
(2) case 分支,不仅提供一个值,还可以在值后面添加if守卫,进行双重过滤
(3) case分支,将默认情况匹配的值赋给一个变量(用变量代替下划线_的占位符),在后面的处理语句中可以使用
三、各种匹配
-
对类型模式匹配
(1) 语法结构与基本语法一致,仅需改变case分支 “case 变量 : 类型 => …”
(2) 案例:异常处理
-
对Array和List模式匹配
(1) 对Array进行模式匹配,分别可以匹配带有指定元素的数组,带有指定个数元素的数组,以某元素打头的数组
(2) 对List进行模式匹配,与Array类似,但需要使用List特有的操作符"::"
(3) 案例
-
case class 模式匹配
-
Option模式匹配 [Spark源码]
(1) Scala的一种特殊类型,Option有两种值,一种是Some,表示有值,另一种是None表示没值
(2) Option经常会用于模式匹配中,用于判断某个变量值的有无,比Nil更简洁明了
(3)案例