11-1 模式匹配

字符,匹配值

object 字符匹配 {//匹配值之无返回值
    def m1(): Unit ={
        val ch = 'c'
        ch match {
            case 'a' => println(1)
            case 'b' => println(2)
            case  _  => println(3)
        }
    }

    //匹配值之有返回值
    def m2(){
        val ch = 'b'
        val m = ch match {
            case 'a' => 1
            case 'b' => "hello"
            case  _  => '3'
        }
        println(m)
    }

    //守卫条件
    def m3(){
        val ch = 'b'
        val m = ch match {
            case 'a' if ch.isDigit => 1
            case 'b' if ch > 'c' => "hello"
            case  _   => '3'    //如果该处也有守卫条件导致没有匹配,则scala.MatchError
        }
        println(m)
    }
}

字符串,匹配值

object 字符串 {//小写开头的变量在case后当做变量,即m1()输出:xXX
    def m1(): Unit ={
        val str = "qwert"
        val xXX = 'q'
        str(1) match {
            case 'q' => println("这是q")
            case xXX => println("xXX")
            case x if x.isDigit => println(x + " : " + 1)
            case _ => println(2)
        }
    }

    //若要把xXX解析成常量,则加 反引号,所以输出:2
    def m2(): Unit ={
        val str = "qwert"
        val xXX = 'q'
        str(1) match {
            case 'q' => println("这是q")
            case `xXX` => println("xXX")
            case x if x.isDigit => println(x + " : " + 1)
            case _ => println(2)
        }
    }

    //大写开头的变量表示常量,输出:2
    def m3(): Unit ={
        val str = "qwert"
        val Xxx = 'q'
        str(1) match {
            case 'q' => println("这是q")
            case Xxx => println("Xxx")
            case x if x.isDigit => println(x + " : " + 1)
            case _ => println(2)
        }
    }
}

类型匹配

object 匹配类型 {
  //输出:Int def main(args: Array[String]): Unit
= { val i:Any = 10 i match { case x:String=> println("String") case x:Int => println("Int") } } }
渐变 --> 突变
原文地址:https://www.cnblogs.com/lybpy/p/9757310.html