Swift 3 - Reduce a collection of objects by an Int property

Viewed 5574

I have an array containing 3 objects like so:

class AClass {
    var distance: Int?
}

let obj0 = AClass()
obj0.distance = 0

let obj1 = AClass()
obj1.distance = 1

let obj2 = AClass()
obj2.distance = 2

let arr = [obj0, obj1, obj2]

When I reduce the array and assign it to a variable, I can only sum the last element in the array.

let total = arr.reduce(0, {$1.distance! + $1.distance!})  //returns 4

If I try $0.distance! it errors with "expression is ambiguous without more context".

I tried being more explicit:

var total = arr.reduce(0, {(first: AClass, second: AClass) -> Int in
    return first.distance! + second.distance!
})

But this errors with "'Int' is incompatible with contextual type '_'" How do I reduce it to the sum of the distances?

1 Answers
Related