什么是最简单(最好)的方法来找到一个数组的整数和在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)