包含自定义类的数组的总和 (Swift)

And*_*ltz 4 arrays reduce sum swift

我正在找出一种方法来获取数组中包含的类的值之和。我的设置如下:

class CustomClass {
    var value: Int?
    init(value: Int) {
       self.value = value
    }
}
Run Code Online (Sandbox Code Playgroud)
let object1 = CustomClass(value: 2)
let object2 = CustomClass(value: 4)
let object3 = CustomClass(value: 8)

let array: [CustomClass] = [object1, object2, object3]
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案如下:

var sumArray = [Int]()
for object in array {
    sumArray.append(object.value!)
}
let sum = sumArray.reduce(0, +)
Run Code Online (Sandbox Code Playgroud)

问题是,对于具有许多其他值的类来说,它变得非常复杂,有人知道更好的解决方案吗?

sar*_*nak 12

您可以将自定义类数组紧凑映射为整数数组,然后将该数组减少到其总和。喜欢,

let sum = array.lazy.compactMap { $0.value }
            .reduce(0, +)
Run Code Online (Sandbox Code Playgroud)