Scala入门到精通——第十五节 Case Class与模式匹配(二)

  • 时间:
  • 浏览:0
  • 来源:大发3D_大发3D官方

2 变量模式

Option类虽然是八个多多sealed class

下面给出的分别是Some及None的源码:

单从编译后生成的类来看,它们之间似乎实现法律法律依据都一样,那到底是哪些地方样的呢?

3 构造器模式

7 变量绑定模式

对比上述代码不难 看出,case object与case class所不同的是,case object对应反编译后的CaseObject$.cl

ass中不处在apply、unapply法律法律依据,这是肯能None不非要创建对象及进行内容提取,从这俩深层讲,它被定义为case object是十分合理的。

在前面的课程内容中,朋友原本提到过Option类型,Option类型有八个多多子类,分别是Some和None(单例对象),本小节将从模式匹配的深层对Option类进行重新思考。

上述代码肯能不用模式匹配一段话,要实现相同的功能,还上能 通过下列代码实现:

1 常量模式

6 类型模式

下面给出的是Option类在scala语言中的类层次价值形式:

5 元组模式

case class B对应的字节码文件反编译后如下:

前面朋友看到:None是八个多多case object,它同Some一样都extends Option类,只不过Some是case class,对于case class朋友肯能不粉悉了,那case object它又是为社 样的呢?假设朋友定义了以下类:

4 序列(Sequence)模式

序列模式指的是像Array、List原本的序列集合进行模式匹配

正则表达式中的模式匹配:

下面的代码演示了其如何应用到模式匹配中:

上述代码编译后,生成的字节码文件如下:

case object CaseObject对应的反编译后的内容:

上加公众微信号,还上能 了解更多最新Spark、Scala相关技术资讯

class A的反编译后的代码如下: