Mam listę map [String, Double] i chciałbym scalić ich zawartość w jedną mapę [String, Double]. Jak mam to robić w sposób idiomatyczny? Wyobrażam sobie, że powinienem był to zrobić z zakładką. Coś jak:Scala: jak połączyć kolekcję map
val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
Ponadto, chciałbym obsługiwać kolizje kluczy w sposób ogólny. Oznacza to, że jeśli dodaję klucz do mapy, która już istnieje, powinienem móc określić funkcję, która zwraca Double (w tym przypadku) i pobiera istniejącą wartość dla tego klucza, a także wartość, którą próbuję dodać . Jeśli klucz jeszcze nie istnieje na mapie, po prostu dodaj go, a jego wartość niezmienioną.
W moim konkretnym przypadku chciałbym zbudować pojedynczą mapę [String, Double] tak, że jeśli mapa zawiera już klucz, to Double zostanie dodane do istniejącej wartości mapy.
Pracuję z mapami zmiennymi w moim specyficznym kodzie, ale jestem zainteresowany bardziej ogólnymi rozwiązaniami, jeśli to możliwe.
To jest dokładnie to, jak próbowałem to zrobić na początku. Nie myślałem o tym, żebym to zrozumiał - wciąż się do tego przyzwyczajam, ale to ma sens. W tym przypadku widzę, jak bardzo przypomina to rozumienie list Pythona, z którym jestem o wiele wygodniejszy. Podobnie jak użycie wyniku, jeśli wyrażenie wewnątrz wywołania a. +(). – Jeff
czysta odpowiedź. kudos –