Что означает $ () в Scala?

я сталкиваюсь с этим, когда я читаю код из apache-spark:

    val alpha = new DoubleParam(this, "alpha", "alpha for implicit preference",
                                ParamValidators.gtEq(0)) 
    /** @group getParam */
    def getAlpha: Double = $(alpha)

Я долго искал в интернете, но до сих пор не могу найти хорошее объяснение того, что делает $(alpha) имею в виду здесь? Как он может назначить self-defined class 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)
}

1 ответов


$() - функция искры, определенная в черте Params. Он просто называет getOrDefault на Это

/** An alias for [[getOrDefault()]]. */
protected final def $[T](param: Param[T]): T = getOrDefault(param)