Tengo una Lista de Mapa [Cadena, Doble], y me gustaría fusionar sus contenidos en un único Mapa [Cadena, Doble]. ¿Cómo debería hacer esto de una manera idiomática? Me imagino que debería poder hacer esto con un doblez. Algo como:Scala: cómo combinar una colección de Mapas
val newMap = Map[String, Double]() /: listOfMaps { (accumulator, m) => ... }
Además, me gustaría manejar las colisiones de teclas de forma genérica. Es decir, si agrego una clave al mapa que ya existe, debería poder especificar una función que devuelva un doble (en este caso) y tome el valor existente para esa clave, más el valor que intento agregar . Si la clave aún no existe en el mapa, simplemente agréguela y su valor sin modificaciones.
En mi caso específico me gustaría construir un solo Mapa [Cadena, Doble] de modo que si el mapa ya contiene una clave, entonces el Doble se agregará al valor del mapa existente.
Estoy trabajando con mapas mutables en mi código específico, pero estoy interesado en soluciones más genéricas, si es posible.
Esto es exactamente lo que estaba tratando de hacer inicialmente. No pensé colocar allí la comprensión, todavía me estoy acostumbrando a usarlos así, pero tiene sentido. En este caso, puedo ver cómo se parece mucho a las listas de comprensión de Python, con lo cual me siento mucho más cómodo. También me gusta el uso de la expresión result-bearing if dentro de la llamada a. +(). – Jeff
respuesta limpia. kudos –