typestar

Guardas en Erlang

when refina una cláusula después de que su patrón matchea.

%% Guards refine a clause: when filters after the pattern matches.
charge(Minutes) when Minutes =< 3 ->
    10;
charge(Minutes) when Minutes =< 10 ->
    10 + (Minutes - 3) * 4;
charge(Minutes) when is_integer(Minutes) ->
    38 + (Minutes - 10) * 2.

main(_) ->
    [io:format("~p min costs ~p pence~n", [M, charge(M)])
     || M <- [2, 7, 15]],
    io:format("Long call: ~p~n", [charge(30)]).

Cómo funciona

  1. when Minutes =< 3 elige la cláusula de tarifa plana.
  2. El orden importa: cada cláusula asume que las anteriores fallaron.
  3. is_integer/1 guarda el comodín contra entrada mala.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
369
Tokens
114
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 105 segundos.

Escribe este fragmento

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

← Anterior Siguiente →