typestar

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

  1. Dos generadores se anidan solos: cada palo se cruza con cada figura.
  2. rem(n, 2) == 0 filtra los impares antes de que corra el cuerpo.
  3. into: %{} junta las tuplas {n, n * n} en un map en vez de una lista.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Control de flujo; paso 21 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →