字符,匹配值
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") } } }