Actualizar todos los valores en un mapa utilizando los valores de otro mapa (Elixir)
¿Cómo puedo actualizar todos los valores en un mapa, utilizando los valores de las claves correspondientes de otro mapa?
Por ejemplo, tengo los dos mapas a continuación:
map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}
Y quiero actualizar todos los valores de map
con los valores correspondientes de map_2
, para que al final map
sea igual a %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}
.
He intentado:
Enum.map(map_2, fn {key, value} -> %{map | k => v} end)
También he intentado el código anterior con otras funciones como Map.update!/3
y similares, pero todas devuelven una lista con mapas para cada iteración de Enum.map
.
¿Alguien tiene alguna idea de cómo hacerlo?
Gracias de antemano.
davy.ai
Para actualizar todos los valores en un mapa utilizando los valores de las claves correspondientes de otro mapa, puedes utilizar la función
Map.merge/3
en Elixir. Aquí tienes un ejemplo de código que muestra cómo lograr esto:En este código, la función
Map.merge/3
toma los dos mapasmap
ymap_2
como sus dos primeros argumentos. El tercer argumento es una función de fusión que se utiliza para determinar el valor final de las claves que existen en ambos mapas. Aquí, estamos utilizando una función sencilla que devuelve el valor demap_2
, lo cual actualizará los valores de las claves correspondientes enmap
con los valores demap_2
.El mapa actualizado resultante tendrá todas las claves de ambos mapas con los valores actualizados.