Saltar a contenido

Sesión 08 Colecciones

Expresiones for

for {
    l1 -> x
    l2 -> y //l2 viene siendo un for interno
    //l1 join l2
    if l1 ...1 //where
    //Subconsultas
}
yield x  //Select

Esto nos permite combinar map, flatmap, filter y withFilter para generar colecciones bajo cierto criterio, siendo más expresivos (más facil de entender) internamente scala optimiza esta expresion. Esto es equivalente a una consulta SQL


Evaluación perezosa

  • Flujos: Streams que son secuencia que se van calculando
  • Evaluación perezosa: Calculamos la estructura hasta donde necesitamos
def naturales(n:Int=0):LazyList[Int] = {
    LazyList.cons(n, naturales(n+1))
}
//Tecnicamente una recursión infinita
//Pero se nos calcula a NECESIDAD
val g = naturales()
g(10) //Calcula los 11 primeros
g(5) //No necesita calcular