模式匹配

17 阅读3分钟
package l1

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

  }

}

输入1,输出单词one

输入2,输出单词two

输入3,输出单词three

输入其他,输出单词other

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

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

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

package l1

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 1=> println("one")
      case 2=> println("two")
      case _=> println("未知")
    }
  }

}

match case

  1. 匹配变量类型
  2. 匹配数据类型
  3. 匹配元素的个数
  4. 匹配数组元素个数,元素特征
package l1

/*
*
* match case
*1. 匹配变量类型
*2. 匹配数据类型
*3. 匹配元素的个数
*4. 匹配数组元素个数,元素特征
*/
object matchase04 {

  def matchAeeay(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)
    matchAeeay(arr1)
    matchAeeay(arr2)
    matchAeeay(arr3)
  }

}
package l1

/*
*
* match case
*1. 匹配变量类型
*2. 匹配数据类型
*3. 匹配元素的个数
*4. 匹配数组元素个数,元素特征
*/
object matchase04 {

  def matchAeeay(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)
    matchAeeay(arr1)
    matchAeeay(arr2)
    matchAeeay(arr3)
  }

}
package l1

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