第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用
今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码:
sc.textFile("hdfs://......").flatMap(_.split(" ")).map(_,1).reduceByKey(_ + _)........
这种风格的编程方法叫做链式调用,它的实现方法见下面的代码:
class Animal {def breathe : this.type = this}
class Cat extends Animal {def eat: this.type = this}
object test51{
def main(args:Array[String]){
val cat = new Cat
cat.breathe.eat
}
}
在如上代码中,我们可以看到,我们的cat实例调用了breathe方法后,又调用了eat方法。
如果我们将Animal类和Cat类进行一些变化,如下面所示:
class Animal {def breathe = this}
class Cat extends Animal {def eat = this}
object test51{
def main(args:Array[String]){
val cat = new Cat
cat.breathe.eat
}
}
这样一来,当我们调用cat.breathe.eat时,编译器就会报错
看来,问题的关键就在于方法定义时的this.type = this这里了
应用这种写法,我们就可以在类实例化以后,进行链式的调用方法,进行方法的调用了。
分享下更多的scala资源吧:
百度云盘:http://pan.baidu.com/s/1gd7133t
微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416
360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于scala学习内容
第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用的更多相关文章
- Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Scala 深入浅出实战经典 第47讲:Scala多重界定代码实战及其在Spark中的应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- jquery中链式调用原理
(1).链式调用 $("#mybtn").css("width","100px") .css("height",&quo ...
- 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析
今天学业习了上下文界定的内容,看下这段代码 class Pair_Ordering[T:Ordering](val first : T,val second : T){ def bigger(imp ...
- 第44讲:Scala中View Bounds代码实战及其在Spark中的应用源码解析
今天学习了view bounds的内容,来看下面的代码. //class Pair[T <: Comparable[T]](val first : T,val second : T){// d ...
- 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析
今天学习了scala的界定,先来看看下面这段代码 //class Pair[T] (val first : T,val second : T)class Pair[T <: Comparable ...
- 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析
今天学习了scala的多重界定 T >: A <: B 表示T同时有下界和下界,下界为A,上界为B,A为B的子类型.下界必须写在前面,上界必须写在后面,位置不能颠倒. T<:A wi ...
- 简谈 JavaScript、Java 中链式方法调用大致实现原理
相信,在 JavaScript .C# 中都见过不少链式方法调用,那么,其中实现该类链式调用原理,大家有没有仔细思考过?其中 JavaScript 类库:jQuery 中就存在大量例子,而在 C# 中 ...
随机推荐
- linux命令(5):rm 命令
linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有 ...
- 新博客地址: kuangbin.org
RT. 买了新域名,原来的kuangbin.net已经废了,数据已经移动到了kuangbin.org
- DDR控制
先看下micron公司对DDR3命名的规则: 在设置xilinx ISE中的DDR时 在选择芯片时,不清楚该怎么选择. 请教汤工,给出的答案是Speed等级高的可以兼容等级低的芯片,个在实验之中用的是 ...
- linux python升级和ipython的安装
==CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本.所以需要进行版本升级.由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python ...
- QT toLocal8Bit奇怪的问题
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> MainWi ...
- ue4 FPaths各目录
GetWrappedLaunchDir() 启动时的工作目录,因为马上要把工作目录改为下面所说的exe所在目录,所以会先把当前的缓存起来 FPlatformProcess::BaseDir() 这个是 ...
- BingMap
Application name Key details BngMapTest Key:25nTPiuDe0kxITMR1ymE~j5IlskEImiwGsGmAnsCftQ~Ap0HigfJujLq ...
- CSS3动画效果结合JS的轮播
<style> *{;} #big{ width: 100%; height: 280px; } .carousel-wrapper{ width: 500px; height: 280p ...
- I/O知识
1.jdk1.4之前(jdk1.4开始提供了nio)的早起版本,java对I/O的支持并不完善,开发人员开发高性能I/O程序时,面临的问题主要有: 没有缓冲区,I/O性能存在问题 没有 ...
- HttpWebRequest类
HttpWebRequest类与HttpRequest类的区别. HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息.而HttpWebReque ...