foldLeft требует значения инициализации.
def foldLeft[B](z: B)(f: (B, A) ⇒ B): B
Это значение инициализации (названное z
) должно быть того же типа, что и тип для сворачивания:
(BigDecimal(0) /: xs) { (sum: BigDecimal, x: BigDecimal) => sum+x }
// with syntax sugar
(BigDecimal(0) /: xs) { _+_ }
Если вы добавите Int в качестве значения инициализации, foldLeft будет выглядеть так:
(0 /: xs) { (sum: Int, x: BigDecimal) => sum+x } // error: not possible to add a BigDecimal to Int