3
我有一个包含3个对象,像这样的数组:夫特3 - 由一个Int属性减少对象的集合
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]
当我减少阵列并将其分配给一个变量,我只能总结最后数组中的元素。
let total = arr.reduce(0, {$1.distance! + $1.distance!}) //returns 4
如果我尝试$ 0.distance!它与“表达不明确,没有更多上下文”的错误。
我试图更加明确:
var total = arr.reduce(0, {(first: AClass, second: AClass) -> Int in
return first.distance! + second.distance!
})
但这个错误与“‘诚信’是上下文类型‘_’不兼容” 如何将其降低到距离的总和?
'arr.flatMap'创建一个中间阵列(其可与'arr.lazy.flatMap'避免),所以其他解决方案可能是在这种情况下,优选。 –