在Scala类定义中使用`this`

时间:2015-08-26 20:33:30

标签: scala class apache-spark this

我将在Spark书中讨论Advanced Analytics,在第二章中,它包含以下代码段:

import org.apache.spark.util.StatCounter
class NAStatCounter extends Serializable { 
    val stats: StatCounter = new StatCounter() 
    var missing: Long = 0
    def add(x: Double): NAStatCounter = { 
        if (java.lang.Double.isNaN(x)) {
            missing += 1 
        } else { 
           stats.merge(x)
        }
        this
    }   
    def merge(other: NAStatCounter): NAStatCounter = {
        stats.merge(other.stats)
        missing += other.missing
        this
    }
    override def toString = {
        "stats: " + stats.toString + " NaN: " + missing
    }
}

在这里,我对使用this感到困惑。在addmerge这两个函数中,它是指代码所定义的原始NAStatCounter吗?

书中评论:

  

“合并方法包含跟踪的统计信息   另一个NAStatCounter实例进入当前实例。两者的   这些方法返回它,以便它们可以很容易地链接   一起“。

当他们说this使用链接时,他们的意思是什么?

0 个答案:

没有答案