You can convert your data using map and get the final result using sum :
val total = allData map { ... } sum
With scanLeft you get the specific amounts of each step:
val steps = allData.scanLeft(0) { case (sum,lineData) => sum+lineData} val result = steps.last
If you want to create several new values ββin one iteration step, I would prefer a class that contains values:
case class X(i: Int, str: String) object X { def empty = X(0, "") } (1 to 10).scanLeft(X.empty) { case (sum, data) => X(sum.i+data, sum.str+data) }
source share