typestar

Funs en Erlang

fun ... end hace un valor de función; las cláusulas ramifican adentro.

%% fun ... end makes a function value; clauses branch inside it.
main(_) ->
    Surcharge = fun(night) -> 0;
                   (day) -> 5
                end,
    io:format("Night extra: ~p~n", [Surcharge(night)]),
    io:format("Day extra: ~p~n", [Surcharge(day)]),

    %% Funs close over their surroundings.
    Rate = 4,
    Bill = fun(Minutes) -> Minutes * Rate end,
    io:format("12 minutes: ~p pence~n", [Bill(12)]),

    %% Named library funs pass with fun Name/Arity.
    io:format("~p~n", [lists:map(fun erlang:abs/1, [-3, 4, -7])]).

Cómo funciona

  1. Un fun puede tener cláusulas con patrones como cualquier función.
  2. Los funs encierran ataduras de alrededor como Rate.
  3. fun erlang:abs/1 pasa una función nombrada por aridad.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
474
Tokens
133
Ritmo de tres estrellas
60 tpm

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

Escribe este fragmento

Paso 2 de 4 en El módulo lists; paso 12 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →