[FIXED] Scala glättet eine Liste

Ausgabe

Ich möchte eine Funktion schreiben, die eine Liste abflacht.

object Flat {
  def flatten[T](list: List[T]): List[T] = list match {
    case Nil => Nil
    case head :: Nil => List(head)
    case head :: tail => (head match {
      case l: List[T] => flatten(l)
      case i => List(i)
    }) ::: flatten(tail)
  }
}

object Main {
  def main(args: Array[String]) = {
    println(Flat.flatten(List(List(1, 1), 2, List(3, List(5, 8)))))
  }
}

Ich weiß nicht, warum es nicht funktioniert, es kehrt zurück List(1, 1, 2, List(3, List(5, 8))), aber es sollte sein List(1, 1, 2, 3, 5, 8).

Können Sie mir einen Hinweis geben?

Lösung

Durch Löschen Zeile 4

case head :: Nil => List(head)

Sie erhalten die richtige Antwort.

Denken Sie an den Testfall

List(List(List(1)))

Mit Zeile 4 wird das letzte Element in der Liste nicht verarbeitet


Beantwortet von –
Tim Green


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Long zu HexString

Ausgabe Ich habe das folgende Scala-Snippet: someLong.formatted("%016x") Als Ergebnis erhalte ich den Hex-String. Ich musste jedoch die Scala-Version…