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)