match

32 阅读1分钟

match case 的用法 (1)类似于if else if 这种多分支选择结构,精确匹配值
1.case_是不可能省略的。如果匹配不成功,有没有case_,程序会报错
2.匹配元组元素的数量
3.匹配变量类型
4.匹配元素特征
5.样例类
6.变量声明中的模式

package iterator01

object matchcase06
 def main (args:Array[String]):Unit={
  def main(args:Array[String]):Unit = {
   val a = 11

   a match {
    case x:Int if a> 10=>println("a是大于10的Int")
    case_=>print("a is not Int")
   }
  }
 }
package iterator04

object matchcase04
 def main (args:Array[String]):Unit={
 testType(Array(1,2,3))
  testType(Array(1,2,3,4))
  testType(Array(1,2,3,4))
  testType(Array(1,2,3,4))
  }

 def testType(arr:Any):Unit = {
  arr match{
   case Array(1,x,y)=>println("arr是一个数组,有三个元素。第一个是1")
   case Array(1,x,y)=>println("arr是一个数组,有三个元素。第一个是1")
   case Array(1,x,y)=>println("arr是一个数组,有三个元素。第一个是1")
  }
 }
package iterator01

object matchcase
 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>=21=>"白羊座"
   case 4 if day<=19=>"白羊座"
   case _=>"未知"
  }
  }

 def main(args:Array[String]):Unit={
  println(getZodiac(1,19))
  println(getZodiac(1,21))
  println(getZodiac(3,19))

 }
}