Funciones anónimas en Elixir
fn crea valores función: una calculadora de propina, un aplica-dos-veces y una pasada a Enum.map.
# fn builds a function value; calling one takes a dot before the parens.
tip = fn total, pct -> Float.round(total * pct / 100, 2) end
IO.puts("tip on 48.60: #{tip.(48.60, 20)}")
# Functions travel like any other value.
apply_twice = fn f, x -> f.(f.(x)) end
IO.puts("folded twice: #{apply_twice.(fn s -> s <> s end, "ha")}")
double = fn n -> n * 2 end
IO.inspect(Enum.map([1, 2, 3], double), label: "doubled")
Cómo funciona
fn total, pct -> ... endes un valor, y llamarlo lleva un punto:tip.(48.60, 20).apply_twiceacepta una función y la llama sobre su propio resultado.Enum.map([1, 2, 3], double)le entrega la función duplicadora a una de orden superior.
Palabras clave y builtins usados aquí
endfn
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 411
- Tokens
- 115
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 99 segundos.
Paso 1 de 3 en Enum y pipes; paso 13 de 27 en Fundamentos del lenguaje.