2015-08-13 24 views
6

ho incontrato questo quando sto leggendo il codice da apache-scintilla:

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

Ho cercato per molto tempo nel web, ma ancora non riesco a trovare una buona spiegazione di ciò che vuol dire $(alpha) qui? Come si può assegnare una variabile di classe DoubleParam definita a Double? Grazie!!

saluti, il classe DoubleParam è definita come:

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

Si prega di controllare il link che definisce i simboli Scala: http://docs.scala-lang.org/tutorials/FAQ/finding-symbols.html –

+0

@RahulGopi infatti ha niente a che fare con scala di per sé. È la sintassi introdotta dalla libreria di terze parti, probabilmente dalla scintilla –

+0

@ om-nom-nom. In realtà ho pensato che questa FAQ spiegasse e descrivesse come cercare tali metodi in Scaladoc, ma non è così. –

risposta

8

$() è una funzione Spark definita nel tratto Params. Chiama semplicemente getOrDefault sull'oggetto Params.

definizione È

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

Grazie !! È esattamente quello che voglio! – PunyTitan

+0

Ottimo per ascoltare @PunyTitan. Se sei soddisfatto di una risposta, puoi semplicemente accettarla come risposta alla tua domanda per mostrare la tua gratitudine :-) –

+0

Grazie! Sì, in Spark 2.2.0 è in 'spark \ mllib \ src \ main \ scala \ org \ apache \ spark \ ml \ param \ params.scala' – snark