typestar

Maps a escala en Erlang

maps:fold, filter y merge trabajan la tabla entera de una vez.

%% maps:fold, filter, and merge work the whole table at once.
main(_) ->
    Minutes = #{"5560199" => 12, "5560142" => 3, "5560170" => 21},

    Total = maps:fold(fun(_, M, Acc) -> Acc + M end, 0, Minutes),
    io:format("Billed minutes: ~p~n", [Total]),

    Long = maps:filter(fun(_, M) -> M > 10 end, Minutes),
    io:format("Long calls: ~p~n", [maps:size(Long)]),

    Evening = #{"5560142" => 6, "5560188" => 9},
    Merged = maps:merge(Minutes, Evening),
    io:format("All lines: ~p~n", [maps:size(Merged)]),
    io:format("5560142 now: ~p~n", [maps:get("5560142", Merged)]).

Cómo funciona

  1. maps:fold enhebra un acumulador por cada par.
  2. maps:filter conserva las entradas que su fun aprueba.
  3. merge favorece al segundo map en colisiones de clave.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
546
Tokens
188
Ritmo de tres estrellas
60 tpm

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

Escribe este fragmento

Paso 4 de 4 en Formas de datos; paso 18 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →