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

  • 时间:
  • 浏览:0
  • 来源:万人牛牛棋牌_万人牛牛棋牌官网

编译器给出的提示可不需要需要 通过下列搞笑的话进行消除,

具体参见有过后 人博客文章:SparkSQL(Spark-1.4.0)实战系列(三)——SparkSQL应用案例 http://blog.csdn.net/lovehuangjiaju/article/details/46946533

2 多个参数的case class

加在公众微信号,可不需要需要 了解更多最新Spark、Scala相关技术资讯

scala防止了java语言中处于的这一大问题,scala防止这一大问题的利器要是 模式匹配,中间的java代码可不需要需要 利用scala语言的模式匹配来防止,代码如下:

在进行模式匹配的前一天,有过后 前一天还要确保所有的因为情况汇报都被列出,此时常常会将case class的超类定义为sealed(橡胶密封的) case class,如:

4 case class在实用应用中的其它用途

某个类一旦被定义为case class,则编译器会自动生成该类的伴生对象,伴生对象中包括了apply依据及unapply依据,apply依据使得大家可不需要需要 不还要new关键字就可不需要需要 创建对象,而unapply依据,则使得可不需要需要 方便地应用在模式匹配当中,另外编译器还自动地帮大家实现对应的toString、equals、copy等依据。在实际中,case class除了在模式匹配时能发挥其强大的威力之外,在进行其它应用时,也显示出了其强大的功能,下面给出case class在SparkSQL中的应用,旨在说明case class在实际应用中的重要地位。

在java语言中处于switch搞笑的话,相似于:

当另俩个 类被声名为case class的前一天,scala会帮助大家做下面几件事情:

1 构造器中的参数因为不被声明为var搞笑的话,它默认搞笑的话是val类型的,但一般不推荐将构造器中的参数声明为var

2 自动创建伴生对象,并肩在中间给大家实现子apply依据,使得大家在使用的前一天可不需要需要 不直接显示地new对象

3 伴生对象中同样会帮大家实现unapply依据,从而可不需要需要 将case class应用于模式匹配,关于unapply依据大家在中间的“提取器”那一节会重点讲解

4 实现有过后 人的toString、hashCode、copy、equals依据

除此之此,case class与其它普通的scala类这麼区别

下面给出case class Student字节码文件内容,以验证大家上述所讲的内容:

1 case class常用依据

前面大家提到,定义case class便会自动生成对应的toString,hashCode,equals,copy等依据,

Case Class一般被翻译成样例类,它是五种特殊的类,不需要 被优化以用于模式匹配,下面的代码定义了另俩个 样例类:

3 sealed case class

上述scala代码展示了咋样使用scala中的模式匹配,它的实现依据是通过match关键字与 case X=>的依据实现的,其中case _表示除了 case 10,case 50,case 50的其余匹配,相似于于java中的default。但scala语言中提供了更为灵活的匹配依据,如:

case语言中还可不需要需要 加相应的表达式,相似于: