match case的语法如下
变量 match { case 值 = > 代码}
值匹配
1.scala中的模式匹配只会匹配到一个分支,不需要使用break语句
2.match是表达式,与if表达式一样是有值的
3.除了可以匹配常量,还可以匹配变量
4.支持模式守卫
val ch: Char = 'e'
ch match {
case 'c' | 'C' => print ("这是c")
//添加模式守卫
case _ if ch>'c' => print ("这是其他的字符")
//这是一个变量匹配
case x => print (x)
}
特殊常量的匹配
import scala.math.E
val i=2.718281828459045
E match {
case i=>println(i) //小写字母为变量模式
case `i`=>println(i) //强制常量模式
case _=>println("others")
}
类型匹配
val arr = Array("hs", 1, 2.0, 'a')
arr.map{
case x: Int => println(x)
case s: String => println(s.toUpperCase)
case _: Double => println(Int.MaxValue)
case _ => 0
}
集合的匹配(数组,列表,元组)
val arr1 = Array(0,0,0)
val res = arr1 match {
case Array(0) => "0" //匹配1个0的数组
case Array(x, y) => s"$x $y" // 匹配任何带有两个元素的数组,并将元素绑定到x和y
case Array(x,y,z) => "0" //匹配任何带有三个元素的数组
case Array(0, _*) => "0..." //匹配任何以0开始的数组,数组的长度不限
case _ => "something else"
}