Ausführen des folgenden Codes in einer interaktiven Scala-Konsole
%Vor%gibt das folgende
zurück %Vor%Ich würde erwarten, dass dieser Code zu einem Compilerfehler über die falsche Anzahl von Parametern im Aufruf der get-Methode in allen außer dem ersten Aufruf führt. Warum wird das erfolgreich kompiliert und null zurückgegeben?
Die Java-Map ist nicht typsicher, insbesondere hat die Methode get
diese Signatur:
Sie können also alles als Schlüssel verwenden. In Scala sehen Sie das sogenannte Auto-Tupling, was in Scala 2.11 veraltet ist. Wenn Sie also Ihr Projekt mit -deprecation
kompilieren, sehen Sie:
Sie können das mit dem Compiler-Flag -Xfuture
in einen Fehler umwandeln:
Auto-tupling bedeutet, dass map.get()
als map.get(())
behandelt wird und map.get("key1", "key2")
als map.get(("key1", "key2"))
behandelt wird.
Ich empfehle die Verwendung von Scala-eigenen Sammlungsarten, es sei denn, Sie haben einen besonderen Grund, dies nicht zu tun.
Tags und Links scala