eine concat-Funktion, wie unten mit foldRight definieren ListeScala: Warum foldLeft kann nicht für eine concat von zwei Liste arbeiten?
def concat[T](xs: List[T], ys: List[T]): List[T] = (xs foldRight(ys))(_ :: _)
aber dabei mit foldLeft
def concat1[T](xs: List[T], ys: List[T]): List[T] = (xs foldLeft(ys))(_ :: _)
führt zu einem Kompilierungsfehler value :: is not a member of type parameter T
, braucht Hilfe beim Verständnis dieses Unterschiedes richtig verketten kann.
EDIT:
Für den Fall, jemand könnte auf Falten für eine detaillierte Erklärung suchen http://lampwww.epfl.ch/teaching/programmation_avancee/documents/programmation_avancee_5_en-2x2.pdf
Wie unterscheiden sie sich konzeptionell und was sind die Szenarien, die ich ihnen –
@SomasundaramSekar einen Blick auf die Dokumentation würde beantworten können. Auch http://StackOverflow.com/Questions/6253978/Difference-between-Fold-and-FoldLeft-Or-ForLight und http://StackOverflow.com/Questions/1446419/How-Do-You-Know-When-to -use-falten-links-und-wenn-zu-verwenden-falten-rechts –
@SomasundaramSekar 'FoldLeft' ist natürlicher für List. 'foldRight' erfordert zuerst das Umkehren der Liste und es ist langsamer. – ZhekaKozlov