[笔记迁移][Spark开发语言][Scala][11]模式匹配

版权声明:Collected by Bro_Rabbit only for study https://blog.csdn.net/weixin_38240095/article/details/84146456

一、概述

  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

猜你喜欢

转载自blog.csdn.net/weixin_38240095/article/details/84146456