什么是最简单(最好)的方法来找到一个数组的整数和在swift? 我有一个数组叫multiples我想知道这些倍数的和。
当前回答
一个可能的解决方案是:为它定义一个前缀操作符。 如APL中的略读“+/”运算符(例如GNU APL)
这里有一点不同的方法。
使用泛型类型协议允许我们在Double, Float和Int数组类型上使用此操作符
protocol Number
{
func +(l: Self, r: Self) -> Self
func -(l: Self, r: Self) -> Self
func >(l: Self, r: Self) -> Bool
func <(l: Self, r: Self) -> Bool
}
extension Double : Number {}
extension Float : Number {}
extension Int : Number {}
infix operator += {}
func += <T:Number> (inout left: T, right: T)
{
left = left + right
}
prefix operator +/ {}
prefix func +/ <T:Number>(ar:[T]?) -> T?
{
switch true
{
case ar == nil:
return nil
case ar!.isEmpty:
return nil
default:
var result = ar![0]
for n in 1..<ar!.count
{
result += ar![n]
}
return result
}
}
像这样使用:
let nmbrs = [ 12.4, 35.6, 456.65, 43.45 ]
let intarr = [1, 34, 23, 54, 56, -67, 0, 44]
+/nmbrs // 548.1
+/intarr // 145
(针对Swift 2.2更新,在Xcode Version 7.3中测试)
其他回答
这也是可行的:
let arr = [1,2,3,4,5,6,7,8,9,10]
var sumedArr = arr.reduce(0, combine: {$0 + $1})
print(sumedArr)
结果是:55
斯威夫特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 =数组中元素的个数
斯威夫特3.0
我也有同样的问题,我在苹果的文档上找到了这个解决方案。
let numbers = [1, 2, 3, 4]
let addTwo: (Int, Int) -> Int = { x, y in x + y }
let numberSum = numbers.reduce(0, addTwo)
// 'numberSum' == 10
但是,在我的例子中,我有一个对象列表,然后我需要转换我的列表的值:
let numberSum = self.list.map({$0.number_here}).reduce(0, { x, y in x + y })
这对我很有用。
保持简单……
var array = [1, 2, 3, 4, 5, 6, 7, 9, 0]
var n = 0
for i in array {
n += i
}
print("My sum of elements is: \(n)")
输出:
元素的和是:37
另一种简单的方法:
let sumOfMultiples = ar.reduce(0) { x, y in x + y }
print(sumOfMultiples)