在scala构造函数中使用“self”作为参数

时间:2015-08-10 16:42:44

标签: scala apache-spark

我正在尝试从Apache Spark的源代码中理解以下类声明:

class PairRDDFunctions[K, V](self: RDD[(K, V)])
(implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null)
   extends Logging
   with SparkHadoopMapReduceUtil
   with Serializable
   {

自我在这里是什么意思?它是否在类的其余部分中将self设置为等于传入的RDD?

1 个答案:

答案 0 :(得分:3)

self只是传递给构造函数的参数的名称。因此,对RDD的引用将通过名为self的字段进行(如果它在类中的其他位置使用,则Scala编译器将创建相应的字段)。它类似于(一个更简单的例子)

class Point(x : Int, y : Int) 

也许这里只有一些混淆,名称为selfexplicitly typed self references,通常称为self

  class NodeImpl extends NodeIntf {
    self: Node =>