Agents en Elixir
Un frasco de notas guardado por un Agent: el estado vive en un proceso, no en una variable.
# An Agent is a small process whose whole job is holding state.
{:ok, jar} = Agent.start_link(fn -> [] end)
Agent.update(jar, fn notes -> ["sharpen the scythe" | notes] end)
Agent.update(jar, fn notes -> ["patch the beehive roof" | notes] end)
IO.puts("notes saved: #{Agent.get(jar, fn notes -> length(notes) end)}")
Agent.get(jar, fn notes -> notes end)
|> Enum.each(fn note -> IO.puts("- " <> note) end)
Agent.stop(jar)
Cómo funciona
Agent.start_linkenciende el proceso con una lista vacía como estado.- Cada
Agent.updateantepone una nota corriendo una función sobre el estado actual. Agent.gettambién lee a través de una función, yAgent.stopjubila el frasco.
Palabras clave y builtins usados aquí
endfn
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 425
- Tokens
- 116
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 99 segundos.
Paso 3 de 3 en Procesos; paso 24 de 27 en Fundamentos del lenguaje.