Ho un elenco di mappe [String, Double] e vorrei unire il loro contenuto in una singola mappa [String, Double]. Come dovrei farlo in modo idiomatico? Immagino che dovrei essere in grado di farlo con una piega. Qualcosa di simile:Scala: come unire una raccolta di mappe
val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
Inoltre, mi piacerebbe gestire le collisioni con le chiavi in un modo generico. Cioè, se aggiungo una chiave alla mappa che esiste già, dovrei essere in grado di specificare una funzione che restituisce un doppio (in questo caso) e prende il valore esistente per quella chiave, più il valore che sto cercando di aggiungere . Se la chiave non esiste ancora nella mappa, aggiungila e il suo valore inalterato.
Nel mio caso specifico mi piacerebbe costruire una singola mappa [String, Double] in modo tale che se la mappa contiene già una chiave, quindi il Double verrà aggiunto al valore della mappa esistente.
Sto lavorando con mappe mutabili nel mio codice specifico, ma sono interessato a soluzioni più generiche, se possibile.
Questo è esattamente come stavo provando a farlo inizialmente. Non pensavo di mettere lì la comprensione per-lì - mi sto ancora abituando a usarli in questo modo, ma ha senso. In questo caso vedo come assomiglia molto alle liste di Python, con le quali sono molto più a mio agio. Piace anche l'uso dell'espressione risultante nel richiamo all'interno di una chiamata. +(). – Jeff
risposta pulita. kudos –