基本概念
Scala 中模式匹配类似于 Java 中的 switch,但是更加强大
模式匹配语法中,采用match 关键字声明,
每个分支采用case 关键字声明
需要匹配时,会从第一个case 分支开始,
如果匹配成功,那么执行对应的逻辑代码。
如果匹配不成功,继续执行下一个分支继续进行判断,
如果所有case 都不匹配,则会执行case _ 分支,类似与Java 中的default 语句
⭐⭐
match的细节和注意事项
1)如果所有case都不匹配,那么会执行case _ 分支,类似于Java中default语句
2)如果所有case都不匹配,又没有写case _ 分支,那么会抛出MatchError
3)每个case中,不用break语句,自动中断case
4)可以在match中使用其它类型,而不仅仅是字符
5)=> 等价于 java swtich 的 :
6)=> 后面的代码块到下一个 case, 是作为一个整体执行,可以使用{} 扩起来,也可以不扩。
守卫
⭐⭐⭐
如果想要表达 匹配某个范围的数据,就需要在模式匹配中增加条件守卫
如果 case _ 出现在match 中间,则表示隐藏变量名,即不使用,而不是表示默认匹配。
如果把 默认条件即 case _ => … 写在最前面
可以在 case _ => … 中加入守卫,先做一个范围性过滤
模式中的变量
⭐⭐⭐⭐
如果在case 关键字后跟变量名,那么match 前的表达式的值会赋给那个变量
模式匹配可以有返回值:
返回值就是匹配到的代码块的最后一句话的值