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
loaves.map(order => order * 2)nombra su parámetro;loaves.map(_ + 1)usa_para uno de un solo uso.loaves.filter(_ >= 3)conserva los pedidos que dan true;filter(_ > 2).map(_ * 12)encadena y pasa una lista nueva.map(order => s"$order loaves")produce unList[String]: el tipo del resultado no tiene que ser el de la entrada.
Palabras clave y builtins usados aquí
val
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.
Paso 1 de 3 en Transformaciones; paso 13 de 27 en Fundamentos del lenguaje.