手机版

第4课:Scala模式匹配、类型系统彻底精通与Spar(4)

发布时间:2021-06-07   来源:未知    
字号:

Scala模式匹配Scala类型系统Spark源码阅读

case Currency(_, u) => "Oh noes, I got " + u

case Nothing => "" // 样例对象没有()

}

在声明样例类时,下面的过程自动发生了:

构造器的每个参数都成为val,除非显式被声明为var,但是并不推荐这么做;

在伴生对象中提供了apply方法,所以可以不使用new关键字就可构建对象;

提供unapply方法使模式匹配可以工作;

生成toString、equals、hashCode和copy方法,除非显示给出这些方法的定义。

除了上述之外,样例类和其他类型完全一样,方法字段等。

九:匹配嵌套结构

abstarct class Item

case class Article(description: String, price: Double) extends Item

case class Bundle(description: String, price: Double, items: Item*) extends Item

Bundle("Father's day special", 20.0,

Article("Scala for the Impatient", 39.95),

Bundle("Anchor Distillery Sampler", 10.0,

Article("Old Potrero Straight Rye Whisky", 79.95),

Article("Junipero Gin", 32.95)

)

)

模式可以匹配到特定的嵌套:

case Bundle(_, _, Article(descr, _), _*) => descr

十:密封类

当使用样例类来做模式匹配时,如果要让编译器确保已经列出所有可能的选择,可以将样例类的通用超类声明为sealed。 密封类的所有子类都必须在与该密封类相同的文件中定义。如果某个类是密封的,那么在编译期所有的子类是可知的,因而可以检查模式语句的完整性。让所有同一组的样例类都扩展某个密封的类或特质是个好的做法。

sealed abstract class TrafficLightColor

case object Red extends TrafficLightColor

case object Yellow extends TrafficLightColor

case object Green extends TrafficLightColor

color match {

case Red => "stop"

case Yellow => "hurry up"

case Green => "go"

}

十一:Option类型

Option类型用来表示可能存在也可能不存在的值。样例子类Some包装了某个值,而样例对象None表示没有值。Option支持泛型。

第4课:Scala模式匹配、类型系统彻底精通与Spar(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)