今天学习了下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编程中的广泛运用的更多相关文章

  1. Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  2. Scala 深入浅出实战经典 第48讲:Scala类型约束代码实战及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  3. Scala 深入浅出实战经典 第47讲:Scala多重界定代码实战及其在Spark中的应用

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. jquery中链式调用原理

    (1).链式调用 $("#mybtn").css("width","100px") .css("height",&quo ...

  5. 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析

    今天学业习了上下文界定的内容,看下这段代码 class Pair_Ordering[T:Ordering](val first : T,val second : T){  def bigger(imp ...

  6. 第44讲:Scala中View Bounds代码实战及其在Spark中的应用源码解析

    今天学习了view bounds的内容,来看下面的代码. //class Pair[T <: Comparable[T]](val first : T,val second : T){//  d ...

  7. 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析

    今天学习了scala的界定,先来看看下面这段代码 //class Pair[T] (val first : T,val second : T)class Pair[T <: Comparable ...

  8. 第47讲:Scala多重界定代码实战及其在Spark中的应用源码解析

    今天学习了scala的多重界定 T >: A <: B 表示T同时有下界和下界,下界为A,上界为B,A为B的子类型.下界必须写在前面,上界必须写在后面,位置不能颠倒. T<:A wi ...

  9. 简谈 JavaScript、Java 中链式方法调用大致实现原理

    相信,在 JavaScript .C# 中都见过不少链式方法调用,那么,其中实现该类链式调用原理,大家有没有仔细思考过?其中 JavaScript 类库:jQuery 中就存在大量例子,而在 C# 中 ...

随机推荐

  1. Java基础知识系列——数组

    数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...

  2. Android 7.0 UICC 分析(四)

    本文讲解SIMRecords /frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/SIMRecords.jav ...

  3. atoi()函数

    原型:int  atoi (const  char  *nptr) 用法:#include  <stdlib.h> 功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前 ...

  4. Coursera Machine Learning : Regression 简单回归

    简单回归 这里以房价预测作为例子来说明:这里有一批关于房屋销售记录的历史数据,知道房价和房子的大小.接下来就根据房子的大小来预测下房价. 简单线性回归,如下图所示,找到一条线,大体描述了历史数据的走势 ...

  5. IOS XML解析

    <?xml version = "1.0"  encoding ="utf-8"?> <video>小黄人</video> ...

  6. 用jquery编写的分页插件

    用jquery编写的分页插件 源码 function _pager_go(total_page) { var page_str = $("#_pager_textbox").val ...

  7. 有关tp里搜索框的实现方法

    1:

  8. Java初学随笔

    背景 狡兔三窟,在使用了近7-8年的C#后,考虑到云化的到来,还是要面向更多的语言与技术,近期决定学习scala,先从Java为跳板,最后达到学会并熟练 使用scala的目的. <核心技术> ...

  9. fool

    from PIL import Imageimg = Image.open("D:\\pic2\\CZA3302.png")(w,h) = img.sizeim=img.conve ...

  10. 服务器内存UDIMM与RDIMM区别

    UDIMM 全称是无缓冲双信道内存模块(Unbuffered Dual In-Lne Memory Modules),它不支持服务器内存满配,就是最高容量了,因为使用UDIMM内存时最大使用每通道只能 ...