Suma mapas en Clojure con cadenas y números.
Hola, tengo 2 mapas como estos (con la posibilidad de tener varios mapas)
(No se traduce )
Necesito que esto sea el resultado {:a {:b 3} :c ["perro" "gato"]}
¿Cómo puedo hacer esto?
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
Para lograr el resultado deseado, puedes usar la función
merge-with
en Clojure. Esta función se utiliza para fusionar dos o más mapas en base a una función de combinación. En este caso, queremos fusionar los mapas de manera que cualquier par clave-valor con la misma clave en ambos mapas se combine usando la suma (para valores numéricos) o la concatenación (para valores de lista).Aquí está el código para lograr el resultado deseado para cualquier número de mapas:
Esto devolverá el siguiente mapa:
Explicación:
merge-maps
toma cualquier número de mapas como argumentos utilizando la sintaxis de argumento de longitud variable& maps
.apply
para aplicar la funciónmerge-with
a la lista de mapas.merge-with
toma una función de combinación como su primer argumento, que en este caso es una función anónima que concatena listas (usandoconcat
) o suma números (usando+
).