2016-12-30 4 views
0

Hier ist meine Klasse -Scala: Klassenkonstruktors args nicht sichtbar außerhalb

class Component(name: String, kind: String, 
       signature: ComponentSignature) { 
    val steps = mutable.ListBuffer.empty[StreamAssignment] 

    def addStep(assignment: StreamAssignment) = { 
    steps += assignment 
    } 
} 

Ich habe die woanders folgende Nutzungs -

def addSource(src: Component) = { 
    sources += (src.name, src) 
} 

Ich erhalte eine Fehlermeldung, dass Komponente kein Feld hat "Name".

Mein Verständnis ist, ein Konstruktor arg, was die Sichtbarkeit betrifft, ist wie ein val in der Klasse deklariert. Was vermisse ich?

+0

Ich dachte, Sie hatten einen Zugriffsmodifizierer angeben, für sie implizit ein Element zu erstellen. – Carcigenicate

Antwort

2

Wenn in außerhalb der Klasse Konstruktorparameter sichtbar sein wollen, sollten Sie val mit dem Konstrukt-Parameter verwenden, wie:

class Component(val name: String, val kind: String, 
       val signature: ComponentSignature) { 
+0

Danke. Total vermisst. Mein Fehler. – anindyaju99

+0

Oder verwenden Sie 'case class', das automatisch die gesamte erste Parameterliste' val's macht. –

Verwandte Themen