Вы можете использовать foldLeft
со связанным списком для накопления элементов.
Однако это изменит порядок, поэтому вам нужно будет вызвать функцию .reverse
, если вы действительно заботитесь о порядок, что неэффективно.
list.foldLeft(Nil : List[String]){(l, n) => {
val elements = n :: l
println(elements)
elements
}}
Вывод:
List(A)
List(B, A)
List(C, B, A)
List(D, C, B, A)
List(E, D, C, B, A)
Вот версия, которая сохраняет порядок, но использует ListBuffer
, что не очень хорошо
val elems = ListBuffer[String]()
list.foreach{ s =>
elems += s
println(elems)
}
То же, но со складкой
list.foldLeft(ListBuffer[String]()){(elems, s) =>
elems += s
println(elems)
elems
}
Вывод:
ListBuffer(A)
ListBuffer(A, B)
ListBuffer(A, B, C)
ListBuffer(A, B, C, D)
ListBuffer(A, B, C, D, E)