[筆記遷移][Spark開發語言][Scala][11]模式匹配
阿新 • • 發佈:2018-11-19
一、概述
- 模式匹配,類似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)案例