Ich versuche nur ein paar Hände auf Scala und versuchte, List.concat-Funktion auf eigene Faust zu implementieren. Hier ist der CodeScala Muster passend für Vararg
def concat[A](lists : Traversable[A]*):List[A]={
println("concat called")
lists match {
case Nil => Nil
case x :: Nil => (x :\ List.empty[A])((elem,list)=> elem::list)
case x:: xs => (x :\ concat(xs:_*))((elem,list)=> elem :: list)
}
}
Allerdings, wenn ich versuche, diese Methode zu nennen wie
concat(List(1,2,3),List(2,3,4),List(4,5,6),List(6,7,8))
ich Fehler
Exception in thread "main" scala.MatchError: WrappedArray(List(1, 2, 3), List(2, 3, 4), List(4, 5, 6), List(6, 7, 8)) (of class scala.collection.mutable.WrappedArray$ofRef)
Kann jemand erklären, was ich hier falsch gemacht haben? Vielen Dank im Voraus
Er konnte es auch vereinfachen tun 'lists.toList.flatten' aber wahrscheinlich wasn 't der Punkt hier :) –
Sicher, deshalb habe ich es am Ende des Beitrags erwähnt :) – soon
'lists.flatMap (x => x)' == 'lists.flatten' – Dima