什么是最简单(最好)的方法来找到一个数组的整数和在swift? 我有一个数组叫multiples我想知道这些倍数的和。


当前回答

Swift3已更改为:

let multiples = [...]
sum = multiples.reduce(0, +)

其他回答

@IBOutlet var valueSource: [MultipleIntBoundSource]!

private var allFieldsCount: Int {
    var sum = 0
    valueSource.forEach { sum += $0.count }
    return sum
}

用于嵌套参数

在Swift 4中,您还可以将序列元素约束为Numeric协议,以返回序列中所有元素的和,如下所示

extension Sequence where Element: Numeric {
    /// Returns the sum of all elements in the collection
    func sum() -> Element { return reduce(0, +) }
}

编辑/更新:

Xcode 10.2•Swift 5或更高版本

我们可以简单地将序列元素约束到新的additive算术协议,以返回集合中所有元素的和

extension Sequence where Element: AdditiveArithmetic {
    func sum() -> Element {
        return reduce(.zero, +)
    }
}

Xcode 11•Swift 5.1或更高版本

extension Sequence where Element: AdditiveArithmetic {
    func sum() -> Element { reduce(.zero, +) }
}

let numbers = [1,2,3]
numbers.sum()    // 6

let doubles = [1.5, 2.7, 3.0]
doubles.sum()    // 7.2

要对自定义对象的一个属性求和,我们可以扩展Sequence以接受一个谓词来返回一个符合additive算术的值:

extension Sequence  {
    func sum<T: AdditiveArithmetic>(_ predicate: (Element) -> T) -> T { reduce(.zero) { $0 + predicate($1) } }
}

用法:

struct Product {
    let id: String
    let price: Decimal
}

let products: [Product] = [.init(id: "abc", price: 21.9),
                           .init(id: "xyz", price: 19.7),
                           .init(id: "jkl", price: 2.9)
]

products.sum(\.price)  // 44.5

斯威夫特3、4、5

使用减少:

let totalamount = yourTransactionsModelArray.reduce(0) { $0 + $1.amount}

老式的理解方法:

for (var i = 0; i < n; i++) {
 sum = sum + Int(multiples[i])!
}

//where n =数组中元素的个数

用于对象数组中元素的和

self.rankDataModelArray.flatMap{$0.count}.reduce(0, +)

另一种简单的方法:

let sumOfMultiples = ar.reduce(0) { x, y in x + y }          
print(sumOfMultiples)