typestar

Map y filter en Scala

Los pedidos de una panadería pasados por map y filter, solos y encadenados.

// map applies a function to every element and returns a new List
val loaves: List[Int] = List(2, 5, 1, 8, 3)
val doubled: List[Int] = loaves.map(order => order * 2)

// _ stands in for the parameter when it appears exactly once
val plusOne: List[Int] = loaves.map(_ + 1)

// filter keeps the elements whose predicate answers true
val bigOrders: List[Int] = loaves.filter(_ >= 3)

// the two chain, each stage handing a fresh List to the next
val boxedBig: List[Int] = loaves.filter(_ > 2).map(_ * 12)

// map may return a different element type, here Int to String
val labels: List[String] = loaves.map(order => s"$order loaves")

// filtering first leaves the map less work to do
val shortLabels: List[String] =
  loaves.filter(_ < 4).map(order => order.toString)

Cómo funciona

  1. loaves.map(order => order * 2) nombra su parámetro; loaves.map(_ + 1) usa _ para uno de un solo uso.
  2. loaves.filter(_ >= 3) conserva los pedidos que dan true; filter(_ > 2).map(_ * 12) encadena y pasa una lista nueva.
  3. map(order => s"$order loaves") produce un List[String]: el tipo del resultado no tiene que ser el de la entrada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
763
Tokens
144
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 123 segundos.

Escribe este fragmento

Paso 1 de 3 en Transformaciones; paso 13 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →