Scala模式匹配详解

模式匹配是Scala中非常有特色,非常强大的一种功能。模式匹配,其实*类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件,进行不同的处理。

但是Scala的模式匹配的功能比Java的swich case语法的功能要强大地多,Java的swich case语法只能对值进行匹配。但是Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配、对Array和List的元素情况进行匹配、对case class进行匹配、甚至对有值或没值(Option)进行匹配。

而且对于Spark来说,Scala的模式匹配功能也是极其重要的,在spark源码中大量地使用了模式匹配功能。因此为了更好地编写Scala程序,并且更加通畅地看懂Spark的源码,学好模式匹配都是非常重要的。
1、模式匹配的基础语法

//scala没有java中的switch case语法,但是有更强大的match case语法,即类型匹配,类替代
//match case的语法如下:变量 match { case 值 => 代码 }。_代表不满足以上所有情况的默认。当有一个case分支满足了,就不会继续向下匹配了
//match case语法最基本的应用,就是对变量的值进行模式匹配
//案例:成绩评价
object demo1{
   
  def main(args: Array[String]):Unit={
   
    def studentScore(score:String):Unit={
   
      score match{
   
        case "a"=>println("优秀")
        case "b"=>println("良好")
        case "c"=>println("一般")
        case _=>println("继续努力")
      //_代表其他
      }
    }
    studentScore("a")  //优秀
  }
}

在模式匹配中使用if守卫

//scala模式匹配可以在case的条件判断后加上一个if,进行双重过滤
object demo1{
   
  def main(args: Array[String]):Unit={
   
    def studentScore(name:String,score:String):Unit={
   
      score match{
   
        case "a"=>println("优秀")
        case "b"=>println("良好")
        case "c"=>println("一般")
        case _ if name=="xiong"=>println(name+"是个好孩子,加油")
        case _=>println("继续努力")
      }
    }
    studentScore("xiong","d") //xiong是个好孩子,加油
  }
}

在模式匹配中进行变量赋值


                
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值