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.
我有要求,我想要列表中所有员工工资的总和值
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.