Join elem with next one in a functional style

Que*_*eff 2 functional-programming scala list higher-order-functions

I'm trying to find a way to "join"/"groupby" 2 elements in a list as following :

List("a","b","c","d")  -> List("ab","bc","cd")
Run Code Online (Sandbox Code Playgroud)

With a functional style.

Would someone know how to do this?

Need I use reducer, fold, scan, other higher-order function?

Krz*_*sik 8

滑动创建带有滑动窗口的子集合,然后您只需要将此子列表映射到字符串:

List("a","b","c","d").sliding(2,1).map{case List(a,b) => a+b}
Run Code Online (Sandbox Code Playgroud)


Dmy*_*tin 6

尝试

val xs = List("a","b","c","d")
(xs, xs.tail).zipped.map(_ ++ _) // List(ab, bc, cd)
Run Code Online (Sandbox Code Playgroud)


And*_*cus 5

您可以使用sliding来创建一个窗口:

val l = List("a","b","c","d")
val res = l.sliding(2).map(_.reduce(_ + _))
res.foreach(println)
Run Code Online (Sandbox Code Playgroud)

这导致

ab
bc
cd
Run Code Online (Sandbox Code Playgroud)