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?
滑动创建带有滑动窗口的子集合,然后您只需要将此子列表映射到字符串:
List("a","b","c","d").sliding(2,1).map{case List(a,b) => a+b}
Run Code Online (Sandbox Code Playgroud)
尝试
val xs = List("a","b","c","d")
(xs, xs.tail).zipped.map(_ ++ _) // List(ab, bc, cd)
Run Code Online (Sandbox Code Playgroud)
您可以使用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)