开发者学堂课程【Scala 核心编程 - 进阶:Match 的注意事项和细节】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9067
Match 的注意事项和细节
1.如果所有 case 都不匹配,那么会执行 case _分支,类似于 Java 中 default 语句
2.如果所有 case 都不匹配,又没有写 case _分支,那么会抛出MatchError
案例:
val oper = '#'
val n1 = 20
val n2 = 10
var res = 0
oper match {
case '+'=> res=n1+n2
case'_'=> res=n1-n2
case '*' => res = n1 * n2
case '/' => res=n1 / n2
//case _ => println("oper error")
}
如果 case_没有写出支行,在val oper = '-'写一个特殊字符#如上方代码,在 case 找不到匹配,也没有写默认匹配,那么运行结果会抛出一个异常 MatchError
注意:
只要是 match 里至少有一个 case _
3.每个 case 中,不用 break 语句,自动中断 case
4.可以在 match 中使用其它类型,而不仅仅是字符
案例:
可以在上方代码中加一个匹配
case 1 => println("匹配到1")
还可以写成
case 1.1 => println("匹配到1.1")
val oper = '#'改成val oper = '1'
5.=>等价于 java swtich 的
6.=>后面的代码块到下一个 case,是作为一个整体执行,可以使用{}扩起来,也可以不扩。
案例:
case '+'=>
res =n1+n2
println("ok~~")
println("hello~~")
val oper = '1'改成val oper = '+'
执行,都会被输出,但不利于阅读。如果有 case 更建议用{}扩起来做成一个代码块,更利于阅读。