模式匹配:match
- Scala 中的模式匹配类似于Java 中的switch 语法,但是更加强大
- scala中有match类似于java中的switch语句,模式匹配包含了一系列备选项,每个都开始于关键字 case ;每个备选项都包含了一个模式及一到多个表达式;箭头符号 => 隔开了模式和表达式。
- match 表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现有一个匹配的case,剩下的case不会继续匹配。
注意:
- 如果所有case 都不匹配,那么会执行case _ 分支,类似于Java 中default 语句
- 如果所有case 都不匹配,又没有写case _ 分支,那么会抛出MatchError
- 每个case 中,不用break 语句,自动中断case
- 可以在match 中使用其它类型,而不仅仅是字符
- => 等价于java swtich 的 “ : ”
- => 后面的代码块到下一个case, 是作为一个整体执行,可以使用{} 扩起来,也可以不扩。
/**
1. match (类似java switch) 和case 是关键字
2. 如果匹配成功, 则执行=> 后面的代码块.
3. 匹配的顺序是从上到下,匹配到一个就执行对应的代码
4. => 后面的代码块不要写break ,会自动的退出match
5. 如果一个都没有匹配到,则执行case _ 后面的代码块
*/
def listPlus2(n:Any) : Any ={
n match {
case x:Int => x + 2 //如果x为iint类型的,则返回x+2
case _ => println("无法匹配")
}
简单应用match
object Match01 {
def main(args: Array[String]): Unit = {
//java中有switch表示另一种分支
/**
* 什么时候选择if.else或者switch
* 在java中如果分支条件全是选项的时候,判断的数量大于3时使用switch
* 但是在scala中,使用模式匹配的方式,scala中的模式匹配比java中的switch强大,因为在java中switch的条件是有限的
*/
var profession = 8
profession match {
case 1 => println("警察")
cas