2015-08-13 34 views
6

我遇到這個的時候,我從Apache的火花讀取代碼:

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

...我已經尋找在網上很長一段時間,但仍然無法找到的是什麼意思$(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) 
} 
+0

請檢查其定義斯卡拉符號鏈接:其實它有http://docs.scala-lang.org/tutorials/FAQ/finding-symbols.html –

+0

@RahulGopi與scala本身無關。這是由第三方庫引入的語法,可能是由火花 –

+0

@ om-nom-nom我實際上假設這個FAQ會解釋它,並描述如何在Scaladoc中查找這樣的方法,但是它沒有。 –

回答

8
$()

在性狀Params定義的火花功能。它只是在Params對象上調用getOrDefault

它的定義是

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

謝謝!這正是我想要的! – PunyTitan

+0

很高興聽到@PunyTitan。如果你對答案滿意,那麼你可以簡單地接受它作爲你的問題的答案,以顯示你的感激之情:-) –

+0

謝謝!是的,在Spark 2.2.0中它在'spark \ mllib \ src \ main \ scala \ org \ apache \ spark \ ml \ param \ params.scala' – snark