Ich bin immer noch ein Newbie-Scala-Programmierer, es tut mir so leid, wenn diese Frage naiv aussieht, aber ich habe eine Weile gesucht und keine Lösungen gefunden. Ich benutze Scala 2.8, und ich habe eine Klasse PXGivenZ definiert als:
%Vor%Wenn ich versuche, ein Element dieser Klasse in einen anderen Programmblock wie folgt zu instanziieren:
%Vor%Ich erhalte den folgenden Fehler:
%Vor%Es gibt eindeutig etwas, was ich nicht verstehe: Wie unterscheidet sich eine Karte [Seq [Int], Karte [Int, Double]] von einer HashMap [Seq [Int], HashMap [Int, Double]]? Oder stimmt etwas nicht mit den "veränderbaren" Klassen?
Vielen Dank im Voraus an jeden, der mir helfen wird!
Standardmäßig ist das Map
, das in eine Scala-Datei importiert wird, scala.collection.immutable.Map
und nicht scala.collection.Map
. Und natürlich ist HashMap in Ihrem Fall eine veränderbare Karte, keine unveränderliche.
Wenn Sie möchten, dass sich Map
auf scala.collection.Map
in Ihrer Datei bezieht, müssen Sie es explizit importieren:
Der Grund dieser Wahl ist, dass Sie eine unveränderliche und eine veränderbare Struktur nicht auf die gleiche Weise manipulieren. Daher sagt scala standardmäßig, dass Sie eine unveränderliche Struktur verwenden werden, die "am sichersten" ist. Wenn Sie dies nicht möchten, müssen Sie es explizit ändern.