typestar

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

  1. Agent.start_link enciende el proceso con una lista vacía como estado.
  2. Cada Agent.update antepone una nota corriendo una función sobre el estado actual.
  3. Agent.get también lee a través de una función, y Agent.stop jubila el frasco.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Procesos; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →