Actualizar maps en Elixir
Actualizaciones inmutables: cada cambio al marcador devuelve un map nuevo y deja el original en paz.
# Maps never mutate: every update hands back a new map.
score = %{player: "June", points: 40, streak: 2}
leveled = %{score | points: score.points + 10}
IO.inspect(leveled, label: "after | update")
bumped = Map.put(leveled, :streak, leveled.streak + 1)
IO.inspect(bumped, label: "after put")
IO.puts("the original still says #{score.points}")
Cómo funciona
%{score | points: ...}reescribe una clave existente; rechaza claves que el map no tiene.Map.putfijastreaka partir del valor anterior sobre la copia más nueva.- La última línea demuestra que
scorenunca cambió.
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 344
- Tokens
- 84
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 72 segundos.
Paso 2 de 3 en Maps y structs; paso 11 de 27 en Fundamentos del lenguaje.