Ⅰ、match case 匹配元组
能根据元组元素的个数来匹配,不是一一精确的匹配值
细节:
1.case_的位置一定要放在最后
2.case_不写。如果没有正确的匹配项。报错!
package test34object test2 {
def main(args: Array[String]): Unit = {val d1=(1,2,3)
// val d1=(1,2,3,4)
// val d1=(1,2,3,4,5,)val d:Any=d1d match {case (x,y,z)=>println(s"这是一个有三个元素的元组,它第二个元素是:${y}")case (x,y,z,k)=>println(s"这是一个有四个元素的元组,它最后一个元素是:${k}")case _=>println("未知类型")}
}
}
match case除了格式匹配之后,还可以对变量的类型进行匹配。
package test34object test4 {def main(args: Array[String]): Unit = {val i=1val j:Double=1.2val b:Boolean=falseval x:Any=bx match {case _:Int=>println(s"当前是Int")case _:Double=>println(s"当前是Double")case _:Boolean=>println(s"当前是Boolean")case _=>println("其他")}}
}
匹配 数组:元素的个数+元素的特征
package test34
object test5 {def main(args: Array[String]): Unit = {val arr1=Array(1,2,3)val arr2=Array(0,2,3)val arr3=Array(1,2,3,4)val arr4=Array(-1,1,2,3,4)val b:Any=arr4b match {case Array(1,x,y)=>println("数组第一个元素是1,一共有3个元素")case Array(1,x,y,z)=>println("数组第一个元素是1,一共有4个元素")case Array(_,1,_*)=>println("数组第二个元素是1,一共有4个元素")case _=>println("其他")}}
}
Ⅱ守卫语句
格式:
value match{
case pattern if guardCondition =>result
//其他case语句 。。。。。。
}