Pun*_*tan 7 scala apache-spark
当我从apache-spark读取代码时遇到这种情况:
val alpha = new DoubleParam(this, "alpha", "alpha for implicit preference",
ParamValidators.gtEq(0))
/** @group getParam */
def getAlpha: Double = $(alpha)
Run Code Online (Sandbox Code Playgroud)
我已经在网上搜索了很长时间但是仍然无法找到$(alpha)这里意味着什么的好解释?它如何为自定义的类DoubleParam变量赋值Double?谢谢!!
仅供参考,该DoubleParam课程定义为:
class DoubleParam(parent: String, name: String, doc: String, isValid: Double => Boolean)
extends Param[Double](parent, name, doc, isValid) {
def this(parent: String, name: String, doc: String) =
this(parent, name, doc, ParamValidators.alwaysTrue)
def this(parent: Identifiable, name: String, doc: String, isValid: Double => Boolean) =
this(parent.uid, name, doc, isValid)
def this(parent: Identifiable, name: String, doc: String) = this(parent.uid, name, doc)
/** Creates a param pair with the given value (for Java). */
override def w(value: Double): ParamPair[Double] = super.w(value)
}
Run Code Online (Sandbox Code Playgroud)
$()是特征中定义的Spark函数Params.它只是调用getOrDefault上的Params对象.
它的定义是
/** An alias for [[getOrDefault()]]. */
protected final def $[T](param: Param[T]): T = getOrDefault(param)
Run Code Online (Sandbox Code Playgroud)