Scala中的模式匹配类似于Java中的switch语法

  1. int i = 10
  2. switch (i) {
  3. case 10 :
  4. System.out.println("10");
  5. break;
  6. case 20 :
  7. System.out.println("20");
  8. break;
  9. default :
  10. System.out.println("other number");
  11. break;
  12. }

但是scala从语法中补充了更多的功能,所以更加强大

基本语法


模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配,那么会执行case _分支,类似于Java中default语句

  1. object TestMatchCase {
  2. def main(args: Array[String]): Unit = {
  3. var a: Int = 10
  4. var b: Int = 20
  5. var operator: Char = 'd'
  6. var result = operator match {
  7. case '+' => a + b
  8. case '-' => a - b
  9. case '*' => a * b
  10. case '/' => a / b
  11. case _ => "illegal"
  12. }
  13. println(result)
  14. }
  15. }

1.说明
(1)如果所有case都不匹配,那么会执行case 分支,类似于Java中default语句,若此时没有case 分支,那么会抛出 MatchError
(2)每个case中,不需要使用break语句,自动中断case
(3)match case语句可以匹配任何类型,而不只是字面量
(4)=> 后面的代码块,直到下一个case语句之前的代码是 作为一个整体执行,可以使用{}括起来,也可以不括