typestar

Matching en la cabeza en Erlang

Una función, varias cláusulas: la cabeza hace la ramificación.

%% One function, several clauses: the head does the branching.
describe({call, Line, _}) ->
    io_lib:format("line ~p connected", [Line]);
describe({busy, Line}) ->
    io_lib:format("line ~p engaged", [Line]);
describe({fault, Line, Why}) ->
    io_lib:format("line ~p down: ~s", [Line, Why]).

main(_) ->
    Events = [{call, 3, "5560199"}, {busy, 7},
              {fault, 12, "wet pair"}],
    [io:format("~s~n", [describe(E)]) || E <- Events].

Cómo funciona

  1. Cada cláusula de describe matchea una forma de evento distinta.
  2. Las cláusulas se prueban de arriba abajo; gana el primer match.
  3. io_lib:format arma el string para que otro lo imprima.

El intento, en números

Líneas
12
Caracteres a escribir
415
Tokens
144
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 144 segundos.

Escribe este fragmento

Paso 1 de 4 en Coincidencia de patrones; paso 4 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →