El operador pipe en Elixir
Una cosecha de miel fluye por map, filter, sum y round sin una sola llamada anidada.
# |> feeds the left result in as the first argument on the right.
harvest = [12.5, 8.0, 15.25, 6.75, 11.0]
total =
harvest
|> Enum.map(fn lbs -> lbs * 0.9 end)
|> Enum.filter(fn lbs -> lbs > 7 end)
|> Enum.sum()
|> Float.round(1)
IO.puts("market-ready honey: #{total} lbs")
IO.puts("raw off the frames: #{Float.round(Enum.sum(harvest), 1)} lbs")
Cómo funciona
|>pasa cada resultado como primer argumento de la llamada siguiente.- El encadenamiento pesa cada cuadro, descarta los livianos y pliega el resto en un total.
- La última línea hace un paso sin pipes, para el antes y el después.
Palabras clave y builtins usados aquí
endfn
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 347
- Tokens
- 92
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 79 segundos.
Paso 3 de 3 en Enum y pipes; paso 15 de 27 en Fundamentos del lenguaje.