模式匹配

1、如果所有case都不匹配那么会执行case _ 分支,类似于java中的defaul语句,若此时没有case _ 分支,那么会抛出MatchError。

2、每一个case中,不需要使用break语句,自动断开case。

3、match case 语句可以匹配任何类型,而不是字面量。

4、 => 后面的代码块,直到下一个case语句之前的代码是作为一个整体执行,可以使用{}括起来,也可以不括。

 

 

 1 object Test1_PatternMat {
 2   def main(args: Array[String]): Unit = {
 3     //1、基本的定义语法
 4     val x: Int = 2
 5     val y: String = x match {
 6       case 1 => "one"
 7       case 2 => "two"
 8       case 3 => "three"
 9       case _ => "other"
10     }
11     println(y)
12 
13     //2、示例:用模式匹配实现简单二元运算
14     val a = 25
15     val b = 12
16 
17     def matchDualOp(op: Char) = op match {
18       case '+' => a + b
19       case '-' => a - b
20       case '*' => a * b
21       case '/' => a / b
22       case _ => "非法运算符"
23     }
24 
25     println(matchDualOp('+'))
26     println(matchDualOp('/'))
27     println("--------------------------")
28 
29     //3、模式守卫
30     //求一个整数的绝对值
31     def abs(num:Int) = {
32       num match {
33         case i if i >= 0 => i
34         case i if i < 0 => -i
35       }
36     }
37     println(abs(9))
38     println(abs(-1))
39 
40 
41   }
42 }

 

posted @ 2022-05-23 20:34  小王同学学编程  阅读(103)  评论(0编辑  收藏  举报
levels of contents