match case模式匹配

21 阅读2分钟

match case模式匹配

match case

1.匹配精确值

2.匹配数据类型

3.匹配元素的个数

4.匹配元素个数,元素特征

5.匹配案例类

6.变量声明时的匹配

package matchcase

object matchase01 {
  //42->湖北省
  //52->四川省
  def main(args: Array[String]): Unit = {
//    val code = 42
//    var province = ""
//    if(code == 42) {
//      province = "湖北省"
//    }else if (code == 52){
//      province ="四川"
//    }else{
//      province = "未知"
//    }
//

    val code = 12
    val province = code match {
      case 42 => "湖北省"
      case 52 => "四川省"
      case _  => "未知"
    }
    println(province)
  }
}

其中if语句为:

val code = 42
//    var province = ""
//    if(code == 42) {
//      province = "湖北省"
//    }else if (code == 52){
//      province ="四川"
//    }else{
//      province = "未知"
//    }

eg1:

输入1,输出单词one

输入2,输出单词two

输入3,输出单词three

输入其他,输出单词other

1.如果能精准匹配成功,就会执行后面的代码

2.case _ 他可以表示匹配任意的内容。一定要放在match case 的最后一条

3.case _不能省略:如果匹配不成功,就会报错

package matchcase

object matchase02 {
  def main(args: Array[String]): Unit = {
//输入1,输出单词one
//输入2,输出单词two
    //输入3,输出单词three
    //输入其他,输出单词other

    //1.如果能精准匹配成功,就会执行后面的代码
    //2.case _ 他可以表示匹配任意的内容。一定要放在match case 的最后一条
    //3.case _不能省略:如果匹配不成功,就会报错


    //1.从键盘获取数字
    val code = 10
    //2.使用matchcase进行匹配
    code match {
      case _ => println("未知")
      case 1 => println("one")
      case 2 => println("two")
    }
  }
}

匹配元素个数,元素特征

package matchcase

//match case
//1.匹配精确值
//2.匹配数据类型
//3.匹配元素的个数
//4.匹配元素个数,元素特征
object matchase04 {
  def matchArray(arr:Any): Unit = {
    arr match {
      case Array(x,y) => println("匹配带有两个元素的数组",x,y)
      case Array(1,b,c) => println("匹配到有三个元素的数组,第一个元素是1")
      case Array(a,b,c) => println("匹配到有三个元素的数组",a,b,c)
      case Array(10,_*) => println("第一个元素是10,元素的个数有任意个")
      case _ => println("没有匹配到")
    }
  }
  def main(args: Array[String]): Unit = {
    val arr1 = Array(1,2,3)
    val arr2 = Array(2,2,3)
    val arr3 = Array(10,2,3,1)
    matchArray(arr1)
    matchArray(arr2)
    matchArray(arr3)
  }
}

变量声明时的匹配

package matchcase

//match case
//1.匹配精确值
//2.匹配数据类型
//3.匹配元素的个数
//4.匹配元素个数,元素特征
//5.匹配案例类
//6.变量声明时的匹配
object matchase06 {


  def main(args: Array[String]): Unit = {
    val arr = Array(11,22,33,4,5)
    //定义3个变量:x,y,z保存数组中的前三个元素的值
    //val x = arr(0)
    //val y = arr(1)
    //val z = arr(2)
    val Array(x,y,z, _*) = arr
    println(x,y,z)
  }
}