gpt4 book ai didi

Swift 3 - 通过 Int 属性减少对象集合

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:31 24 4
gpt4 key购买 nike

我有一个包含 3 个对象的数组,如下所示:

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!
})

但是这个错误与“‘Int’与上下文类型‘_’不兼容”如何将其减少为距离总和?

最佳答案

var total = arr.reduce(0, {$0 + $1.distance!})

第一个参数是累加器,它已经是一个整数。

请注意,这会在没有距离的元素上崩溃。你可以解决这个问题,例如使用:

let total = arr.reduce(0, {$0 + ($1.distance ?? 0)})

let total = arr.compactMap { $0.distance }.reduce(0, +)

关于Swift 3 - 通过 Int 属性减少对象集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com