Scala模式匹配详解

scala模式匹配

模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

match 对应 Java 里的 switch,但是写在选择器表达式之后。Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配、对Array和List的元素情况进行匹配、对case class进行匹配、甚至对有值或没值(Option)进行匹配。

match 表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现有一个匹配的case,剩下的case不会继续匹配。

对于Spark来说,Scala的模式匹配功能也是极其重要的,在spark源码中大量地使用了模式匹配功能。

1.基本语法

match case语法最基本的应用,就是对变量的值进行模式匹配

def match1(x:Int):String=x match{
   
   case 1=>"one"
   case 2=>"two"
   case _=>"other"   //其他选项用 "_"表示
}
println(match1(1))  //输出one
2.类型匹配

Scala模式匹配可以直接对类型匹配

def match1(x:Any) =x match{
   
    case i:Int =>println("输入的值类型为Int类型,值为:"+i)
    case j:String =>println("输入的值类型为String类型,值为:"+j)
    case _ =>println("输入类型未知")
}
match1(2)  //输入得值类型为Int类型,值为:2

案例:对异常进行匹配

def excepetionmatch(e:Exception)=e match{
   
  case e1:IOException => println("error,IOException")
  case e2:NullPointerException=> println("error,NullPointerException")
  case e3:ClassNotFoundException=> println("error,ClassNotFoundException")
  case _:Exception=> println("don't know")
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值