Lección 19 / 20

for comprehensions (construir colecciones con yield)

En esta lección usarás for no para repetir, sino para construir una colección nueva.

Añadir yield cambia por completo lo que hace el for: en lugar de ejecutar el cuerpo y descartar el resultado, recoge cada valor producido y devuelve una colección con todos ellos. Además puedes filtrar dentro de la propia cabecera con un if.

El código de ejemplo recorre del 1 al 10, se queda solo con los pares y devuelve sus cuadrados.

La salida empieza por Vector, y eso confunde la primera vez. Es porque 1 to 10 produce un Range, y al aplicarle yield el resultado natural es un Vector, no una List. La regla general de las colecciones de Scala es que el tipo del resultado se parece al de la entrada; si necesitas otra cosa, .toList lo convierte.

Aunque aquí se vea con números, la for comprehension es en realidad azúcar sintáctico sobre map, flatMap y withFilter. Eso significa que el mismo for sirve para encadenar Option, Future o resultados de base de datos, y ahí es donde de verdad se aprecia: convierte código anidado y difícil de seguir en algo que se lee de arriba abajo.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Scala directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

Espacio publicitario (banner)
Espacio publicitario (en el artículo)