Solución:
No necesita anidar sus declaraciones de coincidencia. En su lugar, haga la coincidencia en su lugar así:
def flatten(xs: List[Any]): List[Any] = xs match {
case Nil => Nil
case (head: List[_]) :: tail => flatten(head) ++ flatten(tail)
case head :: tail => head :: flatten(tail)
}
Mi, equivalente a la solución de SDJMcHattie.
def flatten(xs: List[Any]): List[Any] = xs match {
case List() => List()
case (y :: ys) :: yss => flatten(y :: ys) ::: flatten(yss)
case y :: ys => y :: flatten(ys)
}
Eliminando la línea 4
case head :: Nil => List(head)
Obtendrá la respuesta correcta.
Piense en el caso de prueba
List(List(List(1)))
Con la línea 4, el último elemento de la lista no se procesará
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)