(一)变量声明中的模式匹配
package matchcase
object matchcase06 {
def main(args: Array[String]): Unit = {
val arr =Array(1,2,3,4.5)
val a =arr(0)
val b =arr(1)
val c =arr(2)
println("a =" +a + " b = " + b + " c = " + c)
val Array(x,y,z,_*) = arr
println("x =" +x + " y = " + y + " z = " + z)
}
}
(二)守卫语句的格式
守卫语句紧跟在case模式之后,通过if关键字引入
package matchcase
object matchcase06 {
def main(args: Array[String]): Unit = {
val a =11
a match {
case x:Int if a>10 => println("a是大于10的Int")
case _ => println("a不是大于10的Int")
}
}
}
案例:判断星座
package matchcase
object matchcase08 {
def getZodiac(month:Int, day:Int):String = {
month match {
case 1 if day >= 20 => "水瓶座"
case 2 if day <= 18 => "水瓶座"
case 2 if day >= 19 => "双鱼座"
case 3 if day <= 20 => "双鱼座"
case 3 if day >= 21 => "白羊座"
case 4 if day <= 19 => "白羊座"
case 4 if day >= 20 => "金牛座"
case 5 if day <= 20 => "金牛座"
case 5 if day >= 21 => "双子座"
case 6 if day <= 21 => "双子座"
case 6 if day >= 22 => "巨蟹座"
case 7 if day <= 22 => "巨蟹座"
case 7 if day >= 23 => "狮子座"
case 8 if day <= 22 => "狮子座"
case 8 if day >= 23 => "处女座"
case 9 if day <= 22 => "处女座"
case 9 if day >= 23 => "天秤座"
case 10 if day <= 22 => "天秤座"
case 10 if day >= 23 => "天蝎座"
case 11 if day <= 21 => "天蝎座"
case 11 if day >= 22 => "射手座"
case 12 if day <= 21 => "射手座"
case 12 if day >= 22 => "摩羯座"
case _ => "未知"
}
}
def main(args: Array[String]): Unit = {
println(getZodiac(4,15))
println(getZodiac(2,20))
}
}