模式匹配的类型
for控制结构中的模式匹配
option类型模式匹配
1 常量模式
2 变量模式
3 构造器模式
4 序列(sequence)模式
序列模式指的是像array、list这样的序列集合进行模式匹配
5 元组模式
6 类型模式
上述代码如果不用模式匹配的话,要实现相同的功能,可以通过下列代码实现:
7 变量绑定模式
正则表达式中的模式匹配:
在前面的课程内容中,我们曾经提到过option类型,option类型有两个子类,分别是some和none(单例对象),本小节将从模式匹配的角度对option类进行重新思考。
下面给出的是option类在scala语言中的类层次结构:

option类其实是一个sealed class
下面给出的分别是some及none的源码:
下面的代码演示了其如何应用到模式匹配中:
前面我们看到:none是一个case object,它同some一样都extends option类,只不过some是case class,对于case class我们已经很熟悉了,那case object它又是怎么样的呢?假设我们定义了以下类:
上述代码编译后,生成的字节码文件如下:
单从编译后生成的类来看,它们之间似乎实现方式都一样,那到底是什么样的呢?
class a的反编译后的代码如下:
case class b对应的字节码文件反编译后如下:
case object caseobject对应的反编译后的内容:
对比上述代码不难看出,case object与case class所不同的是,case object对应反编译后的caseobject$.cl
ass中不存在apply、unapply方法,这是因为none不需要创建对象及进行内容提取,从这个角度讲,它被定义为case object是十分合理的。
添加公众微信号,可以了解更多最新spark、scala相关技术资讯