Zuweisung zu einem Wert in Scala

8

Ich mache eine Trainingsübung in Scala und bekomme diesen Val-Reassignment-Fehler. Ich sehe nicht, wo ich einem Wert einen neuen Wert zuweisen werde

%Vor%

und ich erhalte diesen Fehler

%Vor%     
Mansur Ashraf 11.10.2010, 18:07
quelle

4 Antworten

9

b Dies ist der Name eines Parameters für Ihre Schließung ist ein val , das nicht neu zugeordnet werden kann.

foldLeft funktioniert, indem der Rückgabewert eines Aufrufs des Abschlusses als Parameter b an den nächsten übergeben wird. Sie müssen also nur b + (p.name->p.emailAddresses) zurückgeben. (Vergessen Sie nicht die Klammern für den Vorrang.)

    
Ken Bloom 11.10.2010, 18:23
quelle
3

Sie weisen val b im Ausdruck b+=p.name->p.emailAddresses neu zu.

    
Aaron Novstrup 11.10.2010 18:13
quelle
3

Immutable Map hat keine += -Methode. In diesem Fall übersetzt der Compiler b += p.name -> p.emailAddresses in b = b + p.name->p.emailAddresses . Da haben Sie es, Neuzuweisung!

    
missingfaktor 11.10.2010 18:23
quelle
0

Wie bereits erwähnt, stammt die Fehlermeldung vom Ausdruck ...b+=bp.name...

Aber wirklich, du musst hier gar kein FoldLeft machen, ein einfaches Mapping sollte genug sein. Jede Seq[K->V] kann dann über die Methode Map[K,V] in eine toMap konvertiert werden.

In etwa so:

Haftungsausschluss: nicht auf Tippfehler usw. getestet.

%Vor%     
Kevin Wright 11.10.2010 18:48
quelle

Tags und Links