December 2015
Intermediate to advanced
298 pages
5h 30m
English
Just like fold, there is a reduce combinator. And there are two versions: reduceLeft and reduceRight. Here is an example:
scala> val l = List(1,2,3) l: List[Int] = List(1, 2, 3) scala> l reduceLeft { (acc, n) => acc + n } res4: Int = 6
In fold, we provide the initial value for the accumulator. However, here the accumulator is set to the first value of the collection.
If there is no first value, the reduce will fail as shown here:
scala> List[Int]() reduceLeft { (acc, n) => acc + n } java.lang.UnsupportedOperationException: empty.reduceLeft
On the other hand, if invoked on an empty collection, fold returns the initial value itself:
scala> val l = List[Int]() l: List[Int] = List() scala> l.fold(0) { (acc, n) => acc + n } res17: Int = 0
Having ...
Read now
Unlock full access