2

我有一个要求,我想要列表中所有员工工资的总和值

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

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

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

Type mismatch expected:String actual:BigDecimal
4

2 回答 2

5

替代马里奥的答案,如果getSalary返回 a java.math.BigDecimal,并且 thefold也应该返回一个,而不是 a scala.math.BigDecimal
你可以这样做:

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

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

于 2019-09-27T21:29:54.503 回答
4

尝试scala.BigDecimal(0)而不是java.math.BigDecimal.ZERO,也许像这样

employeeList.foldLeft(BigDecimal(0)) { (accSal, emp) => accSal + getSalary(emp) }
于 2019-09-27T19:23:44.027 回答