1. 程式人生 > >[筆記遷移][Spark開發語言][Scala][11]模式匹配

[筆記遷移][Spark開發語言][Scala][11]模式匹配

一、概述

  1. 模式匹配,類似Java的switch-case語句。
  2. 但Scala的模式匹配除了可以對值進行匹配之外,還可以對型別進行匹配,對Array和List的元素進行匹配,對case class(即樣例類)進行匹配,甚至對有無值(Option)進行匹配

二、基礎語法

  1. 定義方式:四個要素
    變數 match {case 值 => …}

  2. 如果值為下劃線_,則代表不滿足以上所有情況的預設情況如何處理 [保底]

  3. match case中,只要一個case分支滿足處理後,不會繼續判斷下一case分支 [沒有break]

  4. 案例
    (1) 基本使用
    MatchBase

    (2) case 分支,不僅提供一個值,還可以在值後面新增if守衛,進行雙重過濾
    MatchIf

    (3) case分支,將預設情況匹配的值賦給一個變數(用變數代替下劃線_的佔位符),在後面的處理語句中可以使用
    MatchVar

三、各種匹配

  1. 對型別模式匹配
    (1) 語法結構與基本語法一致,僅需改變case分支 “case 變數 : 型別 => …”
    (2) 案例:異常處理
    ExceptionHandle

  2. 對Array和List模式匹配
    (1) 對Array進行模式匹配,分別可以匹配帶有指定元素的陣列,帶有指定個數元素的陣列,以某元素打頭的陣列
    (2) 對List進行模式匹配,與Array類似,但需要使用List特有的操作符"::"
    (3) 案例
    MatchArray


    MatchList

  3. case class 模式匹配
    MatchCaseClass

  4. Option模式匹配 [Spark原始碼]
    (1) Scala的一種特殊型別,Option有兩種值,一種是Some,表示有值,另一種是None表示沒值
    (2) Option經常會用於模式匹配中,用於判斷某個變數值的有無,比Nil更簡潔明瞭
    (3)案例 MatchOption