warum sowohl transformieren und map-Methoden in scala?

8

Ich habe Schwierigkeiten, den Unterschied zwischen / Grund für zum Beispiel unveränderbar.Map.Transform und unveränderbar.Map.Map zu verstehen. Es sieht so aus, als würde transform nicht den Schlüssel ändern, aber das scheint nur eine triviale Variante der Kartenmethode zu sein. Fehle ich etwas?

Ich hatte erwartet, eine Methode zu finden, die eine Funktion auf den (Schlüssel, Wert) der Karte anwendet, wenn / wenn auf dieses Element zugegriffen wurde (anstatt die Karte eifrig mit der Map-Funktion zu durchlaufen). Existiert eine solche Methode?

    
Brian 24.05.2013, 14:18
quelle

2 Antworten

3

Wenn Sie nur die Schnittstelle von PartialFunction benötigen, können Sie die Tatsache ausnutzen, dass Map von PartialFunction :

erbt %Vor%     
0__ 24.05.2013, 21:44
quelle
4

Sie können genau das mit mapValues machen. Hier ist die Erklärung aus der Dokumentation:

  

def mapValues ​​[C] (f: (B) ⇒ C): Karte [A, C]

     

Wandelt diese Map durch Anwenden einer Funktion auf jeden abgerufenen Wert um.

     

f - die Funktion zum Transformieren von Werten dieser Map.

     

gibt zurück - eine Kartenansicht, die jeden Schlüssel dieser Karte auf f (this (key)) abbildet. Die resultierende Map umschließt die ursprüngliche Map, ohne irgendwelche Elemente zu kopieren.

Bearbeiten :

Obwohl das Erweitern von Klassen der Auflistungs-API nicht oft eine gute Idee ist, könnte es folgendermaßen funktionieren:

%Vor%     
drexin 24.05.2013 14:22
quelle

Tags und Links