foldLeft 总值与 BigDecimal.ZERO 起始值

foldLeft sum values with BigDecimal.ZERO start value

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

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

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

上面的代码似乎对我不起作用,一直报错

Type mismatch expected:String actual:BigDecimal

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

employeeList.foldLeft(BigDecimal(0)) { (accSal, emp) => accSal + getSalary(emp) }

替代 Mario 的回答,如果 getSalary return 是 java.math.BigDecimal,并且 fold 也应该 return,而不是 scala.math.BigDecimal.
你可以这样做:

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

您可以检查 javadoc 以确认他们没有 + 方法,而是 add 方法。
出于这个原因,它调用了 + 方法 returns Strings.