Comprensiones con for en Elixir
Dos comprensiones: una mano de cartas de dos generadores y un map de un filtro con into:.
# for walks generators, filters as it goes, and collects the results.
court =
for suit <- ["hearts", "spades"], face <- ["J", "Q", "K"] do
"#{face} of #{suit}"
end
IO.inspect(court, label: "court cards")
# A filter clause drops values; into: picks the collection to build.
squares =
for n <- 1..10, rem(n, 2) == 0, into: %{} do
{n, n * n}
end
IO.inspect(squares, label: "even squares")
Cómo funciona
- Dos generadores se anidan solos: cada palo se cruza con cada figura.
rem(n, 2) == 0filtra los impares antes de que corra el cuerpo.into: %{}junta las tuplas{n, n * n}en un map en vez de una lista.
Palabras clave y builtins usados aquí
doendfor
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 388
- Tokens
- 99
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 85 segundos.
Paso 3 de 3 en Control de flujo; paso 21 de 27 en Fundamentos del lenguaje.