它是斯卡拉的吸气剂吗? (来自Spark的RDD类源码)

时间:2015-09-13 12:51:24

标签: scala apache-spark

当我们在spark中进行检查点时,我们会通过以下声明:

checkpointData.get.doCheckPoint()

为什么不使用checkpointData.doCheckPoint()? 声明中的get是否类似于吸气剂?我知道scala类会自动生成getter和setter。

或者是其他一些我不知道的语法?

1 个答案:

答案 0 :(得分:2)

如果您正在讨论RDD类(https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala)的源代码,那么因为checkpointData的类型为Option[RDDCheckpointData[T]]

请参阅源代码中的声明:

private[spark] var checkpointData: Option[RDDCheckpointData[T]] = ...

所以要调用RDDCheckpointData的方法,我们需要从Option中获取它(在确定它isDefined之后,正如你在代码中看到的那样)

阅读有关scala选项类的更多信息: http://www.scala-lang.org/api/current/index.html#scala.Option http://danielwestheide.com/blog/2012/12/19/the-neophytes-guide-to-scala-part-5-the-option-type.html