模式匹配
Scala中的模式匹配类似于java中Switch的用法,但是更加强大
模式匹配语法中,采用match关键之声明,每个分支采用case关键字声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,继续执行下一个分支进行判断。如果所有的case都不匹配,那么会执行 case_分支,类似于Java中的default语句
模式匹配注意事项和说明
- 如果所有case都不匹配,那么会执行case_分支,类似于Java中dbfault语句
- 如果所有case都不匹配,又没有写case_分支,那么会抛出MatchError
- 每个case中,不用break语句,自动中断case
- 可以在match中使用其它类型,而不仅仅是字符
- =>等价于java swtich的:
- =>后面的代码块到下一个case,是作为一个整体执行,可以使用扩起来,也可以不扩
示例代码
1 | package com.sky.scala.exercise16.typematch |
守卫
基本介绍
如果想要表达匹配某个范围的数据,就需要在模式匹配中增加条件守卫
如果case后面有条件守卫if,那么这时候的 _ 不是表示默认匹配 表示忽略传入的的值匹配符号值,使用守卫匹配
类型匹配注意事项
可以匹配对象的任意类型,这样做避免了使用 isInstanceOf和asInstanceOf方法
匹配数组
- Array(0)匹配只有一个元素且为0的数组
- Array(x,y)匹配数组有两个元素,并将两个元素赋值为x和y。当然可以依次类推Array(x,y,z)匹配数组有3个元素的等等…
- Array(0,_*)匹配数组以0开始
匹配列表

匹配元组

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ryder!
评论






