Scala基础学习十之模式匹配了解

Scala基础学习十之模式匹配了解因此为了更好地编写 Scala 程序 并且更加通畅地看懂 Spark 的源码 学好模式匹配都是非常重要的 Scala 是没有 Java 中的 switch case 语法的 相对应的 Scala 提供了更加强大的 match case 语法 即模式匹配 类替代 swi

欢迎大家来到IT世界,在知识的湖畔探索吧!

模式匹配

模式匹配是Scala中非常有特色,非常强大的一种功能。模式匹配,其实类似于Java中的swich case语法,即对一个值进行条件判断,然后针对不同的条件,进行不同的处理。对于Spark来说,Scala的模式匹配功能也是极其重要的,在spark源码中大量地使用了模式 匹配功能。因此为了更好地编写Scala程序,并且更加通畅地看懂Spark的源码,学好模式匹配都 是非常重要的

Scala是没有Java中的switch case语法的,相对应的,Scala提供了更加强大的match case语法,即模式匹配,类替代switch case,match case也被称为模式匹配。

match case的语法如下:变量 match { case 值 => 代码 }。如果值为下划线,则代表了不满足 以上所有情况下的默认情况如何处理。此外,match case中,只要一个case分支满足并处理了, 就不会继续判断下一个case分支了。(与Java不同,java的switch case需要用break阻止)。

Scala的match case与Java的switch case最大的不同点在于,Java的switch case仅能匹配变量 的值,比1、2、3等;而Scala的match case可以匹配各种情况,比如变量的类型、集合的元素、 有值或无值

对值进行匹配

Scala基础学习十之模式匹配了解

欢迎大家来到IT世界,在知识的湖畔探索吧!

如果是2的话呢?

Scala基础学习十之模式匹配了解

这样可以用下面的办法解决

Scala基础学习十之模式匹配了解

也可以用_(下划线)

Scala基础学习十之模式匹配了解

匹配的时候是从下往上匹配的,所以我们改动下代码

Scala基础学习十之模式匹配了解

对类型进行匹配

Scala基础学习十之模式匹配了解

运行结果

Scala基础学习十之模式匹配了解

对Array和List元素进行匹配

Scala基础学习十之模式匹配了解

对case class进行匹配

Scala基础学习十之模式匹配了解

Scala基础学习十之模式匹配了解

对有值或没值进行匹配(Option)

Scala基础学习十之模式匹配了解

Scala基础学习十之模式匹配了解

元组

Scala基础学习十之模式匹配了解

scala泛型

基本和Java一样,区别在于:Java使用<>表示泛型,scala使用[]表示泛型

泛型可以出现在class名称后面以及方法名称后面

class Student[T]

def add[T](t:T)

上下界:

[A1 >: A] : 表示A是A1的下界,也就是A是A1的子类

[A1 <: A] : 表示A是A1的上界,也就是A是A1的父类

协变/逆变:

[+T] : 协变,如果有一个类C定义为C[T],而且A是B的父类,那么C[A]是C[B]的父类

Scala基础学习十之模式匹配了解

[-T] : 逆变,如果有一个类C定义为C[T],而且A是B的父类,那么C[B]是C[A]的父类

Scala基础学习十之模式匹配了解

[T] : 正常定义,如果有一个类C定义为C[T],而且A是B的父类,那么C[A]和C[B]之间没有关系

Scala基础学习十之模式匹配了解

隐式转换

注意:隐式转换函数只能转换一次

隐式转换函数

将一个对象通过定义的隐式转换函数转换成为另一个对象,主要在于某一个对象在调用某个方法的时候,

该对象实际上没有该方法,可以通过隐式转换将该对象转换为具有该方法的其他对象(隐式转换函数在当前作用域中存在)

Scala基础学习十之模式匹配了解

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/111769.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信