foldLeft总和值以BigDecimal.ZERO开头的值

mpr*_*rad 2 functional-programming scala bigdecimal foldleft

我有要求在哪里我想要列表中所有员工薪水的总和

employeeList.foldLeft(java.math.BigDecimal.ZERO) { (accSal,emp) => accSal + getSalary(emp,designation,yearsOfExp) }
Run Code Online (Sandbox Code Playgroud)

在这里,我想为每个员工调用一个函数getSalary,并对返回值求和以获取所有员工的薪水

上面的代码似乎对我不起作用,不断出错

Type mismatch expected:String actual:BigDecimal
Run Code Online (Sandbox Code Playgroud)

Lui*_*rez 5

替代Mario的答案,如果getSalary返回a java.math.BigDecimal,则the fold也应该返回1而不是a scala.math.BigDecimal
你可以这样做:

employeeList.foldLeft(java.math.BigDecimal.ZERO) {
  (accSal, emp) =>
    accSal.add(getSalary(emp,designation,yearsOfExp))
}
Run Code Online (Sandbox Code Playgroud)

您可以检查javadoc以确认它们没有+方法,而是一个方法add
因此,它正在调用+返回Strings的方法。