$(objectName) 在 Scala Spark 中如何工作?

How does $(objectName) work in Scala Spark?

您好,我正在尝试学习 org.apache.spark.ml 设计。我注意到参数值通常是通过使用 $ 符号来检索的。 例如,在 NGram.scala

val n: IntParam = new IntParam(this, "n", "number elements per n-gram (>=1)", 
  ParamValidators.gtEq(1))

/** @group setParam */
def setN(value: Int): this.type = set(n, value)

/** @group getParam */
def getN: Int = $(n)

$ 是一个具有一般特性的 Scala 运算符吗?

我可以在 eclipse 中看到(当我将鼠标悬停在 $(n) 上时)它被定义为

final protected def $[T](param: Param[T]): T

但是我找不到上面定义的class。

你能告诉我这是在哪里定义的吗?

美元符号是 Scala 中完全合法的方法名称。可以看到这个方法的定义here.

在这种情况下,它只是 getOrDefault 的别名。