elixir - metodos - Agregar/eliminar pares clave-valor de un mapa
metodos de hashmap java (2)
Tu problema
No olvides que las variables son inmutables en el elixir.
Por lo tanto, el siguiente código no tiene sentido, porque no puedes cambiar directamente el valor del map
o del map[:d]
esta manera:
map[:d] = 4
Solución
Aquí están las funciones que puedes usar en su lugar:
Map.put(map, key, value)
agrega un elemento a un mapaMap.delete(map, key)
elimina un elemento de un mapa
¿Cómo usar estas funciones?
Como las variables de Elixir son inmutables, estas funciones devuelven un nuevo mapa , en lugar de cambiarlo directamente. Ejemplo:
iex(1)> map = %{a: 1, b: 2, c: 3}
%{a: 1, b: 2, c: 3}
iex(2)> Map.put(map, :d, 4)
%{a: 1, b: 2, c: 3, d: 4}
iex(3)> map
%{a: 1, b: 2, c: 3} # map is unchanged
Por lo tanto, si desea "cambiar" su mapa, debe reemplazar su antigua variable de map
por el nuevo mapa devuelto por Map.put()
o Map.delete()
. Ejemplo:
iex(1)> map = %{a: 1, b: 2, c: 3}
%{a: 1, b: 2, c: 3}
iex(2)> map = Map.put(map, :d, 4)
%{a: 1, b: 2, c: 3, d: 4}
iex(3)> map = Map.delete(map, :a)
%{b: 2, c: 3, d: 4}
¿Cómo agregar (y eliminar) pares clave-valor en un mapa de Elixir? Esto no funciona:
map = %{a: 1, b: 2, c: 3}
map[:d] = 4
Añadir al mapa
Utilice Map.put(map, key, value)
:
Map.put(map, :d, 4)
#=> %{a: 1, b: 2, c: 3, d: 4}
Eliminar del mapa
Utilice Map.delete(map, key)
:
Map.delete(map, :b)
#=> %{a: 1, c: 3}