模式匹配-判断星座

3 阅读1分钟

(一)变量声明中的模式匹配

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
/*
知识点:守卫
value match{
  case 模式 if 条件 => 执行的事情
}
 */


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))
  }
}