Saltar a contenido

Como vamos

Estudiar el reconocimiento de patrones sobre listas considerando que son una estructura recursiva: cabeza y cola

def sumaLista(l:List[Int]):Int = {
    l match {
        case Nil => 0
        case x :: xs => x + sumaLista(xs)
    }
}


def sumaListaCola(l:List[Int]):Int = {
    @scala.annotation.tailrec
    def sumaLista(l:List[Int], acc:Int = 0):Int = {
        l match {
            case Nil => acc
            case x :: xs => sumaLista(xs, acc+x)
        }
    }
    sumaLista(l)
}

Esto representa una mejor forma de procesar datos a partir de su estructura, en este caso estamos considerando que una lista puede tener dos casos, el primero es Nil o lista vacia y el segundo cabeza :: cola, que es una lista no vacia. Como se puede observar el reconocimiento de patrones permite procesar los datos a partir de su estructura de entrada.

Con esto nos estamos evitando tener que pensar en acceder a l.head o l.tail y ligarlos a nombre (val)

Temas

  1. Tuplas
  2. Map y Filter
  3. Reduce y Fold
  4. Resumen