J'essaye de trouver un moyen de "joindre" / "groupby" 2 éléments dans une liste comme suit:
List("a","b","c","d") -> List("ab","bc","cd")
Avec un style fonctionnel.
Est-ce que quelqu'un saurait comment faire cela?
Dois-je utiliser un réducteur, un pliage, un scan ou une autre fonction d'ordre supérieur?
3 Réponses :
Essayez
val xs = List("a","b","c","d") (xs, xs.tail).zipped.map(_ ++ _) // List(ab, bc, cd)
Vous pouvez utiliser le glissement
pour créer une fenêtre:
ab bc cd
cela résulte avec
val l = List("a","b","c","d") val res = l.sliding(2).map(_.reduce(_ + _)) res.foreach(println)
Sliding crée des sous-collections avec fenêtre glissante, il vous suffit alors de mapper ces sous-listes sur des chaînes:
List("a","b","c","d").sliding(2,1).map{case List(a,b) => a+b}