El operador de captura en Elixir
Tres formas de escribir el atajo &, desde capturar una función con nombre hasta fragmentos en línea.
# & captures a named function as a value; &1 is the first argument.
names = ["ada", "grace", "edsger"]
IO.inspect(Enum.map(names, &String.capitalize/1), label: "guests")
# &(...) is shorthand for a small fn.
initials = Enum.map(names, &String.first/1)
IO.puts("initials: #{Enum.join(initials, ".")}")
shout = &(String.upcase(&1) <> "!")
IO.puts(shout.("last call"))
Cómo funciona
&String.capitalize/1convierte una función con nombre en un valor, por nombre y aridad.&String.first/1mapea la lista de invitados a iniciales, unidas con puntos.&(String.upcase(&1) <> "!")es un cuerpo de función entero con&1como argumento.
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 368
- Tokens
- 103
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 95 segundos.
Paso 2 de 3 en Enum y pipes; paso 14 de 27 en Fundamentos del lenguaje.