Mehrwert für Scala map

8

Warum funktioniert das?

%Vor%

aber nicht das?

%Vor%

Der Fehler ist:

%Vor%

Wenn ich (1,0) in die REPL eingeben würde, wird sie korrekt als (Int,Int) eingegeben.

Ich sollte hinzufügen, dass dies gut funktioniert:

%Vor%     
kanielc 20.07.2013, 11:09
quelle

2 Antworten

6

Dies ist eine Mehrdeutigkeit, die durch die Ähnlichkeit zwischen der Notation für Tupel und der für Parameterlisten verursacht wird:

x + (1,0) ist eine Notation für x.+(1,0) , aber leider gibt es keine Methode für x , die zwei Int -Parameter benötigt. Was Sie wollen, ist x.+((1,0)) , d. H.% Co_de%.

Es gibt etwas in Scala, das man auto-tupling nennt, siehe diese Frage und Antworten , die zum Beispiel x + ((1,0)) in println (1,2) umschreibt. Außer das wird hier nicht funktionieren, weil die println((1,2)) -Methode eine variable Anzahl von Argumenten akzeptiert und nicht eine einzige wie + .

Sie erhalten diese seltsame Fehlermeldung, weil Sie erwarten, dass jeder Wert in Ihrer Parameterliste println ein Tupel ist, wie in (1,0) . Es findet ein myMap + ((1,2), (1,3), (3,4)) statt eines Int , daher der Fehler.

    
gourlaysama 20.07.2013, 11:33
quelle
2

fügen Sie ein weiteres Paar Klammern hinzu, damit es funktioniert:

%Vor%     
Jiri Kremser 20.07.2013 11:32
quelle

Tags und Links