2015-08-13 23 views
6

begegne mir das, wenn ich Code lese von Apache-Funken:

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

Ich habe für eine lange Zeit im Web gesucht, aber immer noch nicht gut erklären, was hier bedeutet finden $(alpha)? Wie kann es eine selbstdefinierte Klasse DoubleParam Variable zu Double zuweisen? Vielen Dank!!

FYI, The DoubleParam Klasse ist folgendermaßen definiert:

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

Bitte den Link überprüfen, die scala Symbole definiert: http://docs.scala-lang.org/tutorials/FAQ/finding-symbols.html –

+0

@RahulGopi in der Tat hat es nichts mit Scala an sich. Es ist Syntax von 3rd-Party-Bibliothek eingeführt, wahrscheinlich von Spark –

+0

@ Om-Nom-Nom Ich tatsächlich angenommen, diese FAQ würde es erklären und beschreiben, wie man in Scaladoc nach solchen Methoden suchen, aber es nicht tut. –

Antwort

8

$() ein Funke Funktion in dem Merkmal Params definiert ist. Es ruft einfach getOrDefault auf dem Objekt Params.

Es Definition ist

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

Danke !! Es ist genau das, was ich will! – PunyTitan

+0

Großartig, @PunyTitan zu hören. Wenn Sie mit einer Antwort zufrieden sind, können Sie sie einfach als Antwort auf Ihre Frage akzeptieren, um Ihre Dankbarkeit zu zeigen :-) –

+0

Danke! Ja, in Spark 2.2.0 befindet es sich in 'spark \ mllib \ src \ main \ scala \ org \ apache \ spark \ ml \ param \ params.scala – snark