Сохранение каждой операции складывания в списке

Подводя итог, используя складку, я использую:

  val l = List(1, 2, 3)
  val sum = l.fold(0) { (a, b) => a + b }

Как я могу записать результат каждой операции добавления в список? Итак, для вышеуказанного сохраняется следующее:

List(0,1,3,6)

Единственный вариант, о котором я могу думать, - это вместо сворачивания перебирать список и сохранять результат каждой операции в изменяемом списке.


person blue-sky    schedule 25.11.2015    source источник


Ответы (1)


Это то, что делает scanLeft!

scala> val sum = l.scanLeft(0) { (a, b) => a + b }
sum: List[Int] = List(0, 1, 3, 6)

Это именно то, что вы ищете - версия fold, которая сохраняет результат каждой операции.

person Travis Brown    schedule 25.11.2015