Scala地图列表元素到从先前元素计算的值

pav*_*lou 4 functional-programming scala

我在Scala中有一个字符串元素列表:

val list = List("a", "b", "c")
Run Code Online (Sandbox Code Playgroud)

是否有任何简洁的方法来构造另一个列表,其中每个第i个元素将从列表的第0..i个元素构造(在我的情况下是list.take(i + 1).mkString("|"))

val calculatedLst = briefFunc(list) // List("a", "a|b", "a|b|c")
Run Code Online (Sandbox Code Playgroud)

moh*_*hit 9

您正在寻找的是scan,它使用起始值累积中间累积结果的集合.

非常快速尝试scanLeft.如果列表为空,则会失败.

val list = List("a", "b", "c")                   
list.drop(1).scanLeft(list.head) {
  case (r, c) => r + "|" + c
}                                              
//> res0: List[String] = List(a, a|b, a|b|c)
Run Code Online (Sandbox Code Playgroud)