第74讲:从Spark源码的角度思考Scala中的模式匹配学习笔记

来源:互联网 发布:2015年各省地税数据 编辑:程序博客网 时间:2024/05/18 14:27

74讲:从Spark源码的角度思考Scala中的模式匹配学习笔记:

Spark RegisterWorker源码:

case class RegisterWorker(

id:String,

host:String,

port: Int

cores:Int

memory:Int

webUiPort:Int

publicAddress: String)

    extends DeployMessage {

Utils.checkHost(host, "Required hostname")

assert (port > 0)

}

 

实现case class最最重要的是两个方法:apply/unapply

scalacase class伴生对象中定义了这两个方法。

apply用于对象的生成。所以在代码中直接使用case class,没有new case class

unapply是为模式匹配进行内容匹配的,RegisterWorker

匹配worker发过来的worker进程启动时的注册信息

 

RegisterWorker在匹配时调用RegisterWorker伴生的unapply方法

如果apply是工厂模式来构建具体的RegisterWorker

unapply是结构模式,把传进来的对象的成员结构出来,

 

模式匹配时会暴露所有成员

所以extractor,主要指从对象中提取出相关成员

由于要提取时手动定义unapply,所以可以对对象进行很好的控制

对外暴露时只暴露对象的结构而不暴露对象的实现,

可以做到很好的面向结构编程。

 

手动定义一个类在类中定义伴生对象的unapply方法可带来更大灵活性

 

下一讲:for中的模式匹配

 

以上内容是从王家林老师DT大数据课程第74讲的学习笔记。
DT大数据微信公众账号:DT_Spark  

王家林老师QQ:1740415547 

王家林老师微信号:18610086859
scala74讲视频观看链接:
http://yun.baidu.com/s/1hqJByvU
我的百度网盘共享的DT大数据梦工厂王家林老师第1-74讲的视频内容:http://pan.baidu.com/s/1qWK9CMo

0 0
原创粉丝点击