Comment ajouter (et supprimer) des paires clé-valeur dans une carte Elixir? Cela ne fonctionne pas:
map = %{a: 1, b: 2, c: 3}
map[:d] = 4
Utilisez Map.put(map, key, value)
:
Map.put(map, :d, 4)
#=> %{a: 1, b: 2, c: 3, d: 4}
Utilisez Map.delete(map, key)
:
Map.delete(map, :b)
#=> %{a: 1, c: 3}
N'oubliez pas que les variables sont immuables dans Elixir.
Le code suivant n'a donc aucun sens, car vous ne pouvez pas modifier directement la valeur de map
ou map[:d]
Comme ceci:
map[:d] = 4
Voici les fonctions que vous pouvez utiliser à la place:
Map.put(map, key, value)
ajoute un élément à une carte
Map.delete(map, key)
supprime un élément d'une carte
Puisque les variables Elixir sont immuables, ces fonctions renvoient une nouvelle carte , au lieu de changer directement votre carte. Exemple:
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
Donc, si vous voulez "changer" votre carte, vous devez remplacer votre ancienne variable map
par la nouvelle carte renvoyée par Map.put()
ou Map.delete()
. Exemple:
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}