Is there a way to sum multiple fields of a data class into a new instance? E.g.
Copy code
private data class Quantity(val quantity: BigDecimal, val pendingQuantity: BigDecimal)
fun main(){
val quantities = listOf(Quantity(BigDecimal.ONE, BigDecimal.ZERO), Quantity(BigDecimal.ZERO, BigDecimal.TEN), Quantity(BigDecimal.ONE, BigDecimal.ONE))
println(quantities.sum()) //expecting Quantity(2, 11)
}
Obviously
.sum()
doesn’t work, just an example of what i’d like it to look like
MrNiamh
06/15/2021, 1:42 PM
Oh
reduce
, duh.
Copy code
fun main(){
val quantities = listOf(Quantity(BigDecimal.ONE, BigDecimal.ZERO), Quantity(BigDecimal.ZERO, BigDecimal.TEN), Quantity(BigDecimal.ONE, BigDecimal.ONE))
println(quantities.reduce { sum, element -> Quantity(sum.quantity + element.quantity, sum.pendingQuantity + element.pendingQuantity) }) //expecting Quantity(2, 11)
}