Map/reduce 索引在 Swift 4
Map/reduce with index in Swift 4
如何在 Swift 4 中以更优雅的方式完成类似下面的事情,例如使用 map and/or reduce。
为了在此处发布,我简化了代码,但请注意它确实需要使用索引。
var numbers = [50, 20, 70, 80, 90]
var result = [0,0,0]
for number in numbers {
for i in 0...2 {
result[i] += number + i
}
}
最终结果应该是:
[Int] = 3 values {
[0] = 310
[1] = 315
[2] = 320
}
这是等价的
let result = (0...2).map({ index in numbers.reduce(0) { (sum, current) in sum + current + index } })
或者这个,如果你想使用 result
数组
let r = result.enumerated().map({ (index, _) in numbers.reduce(0) { (sum, current) in sum + current + index } })
但效率会更高
let sum = numbers.reduce(0, +)
let resultsExpected = 3
let result = (0..<resultsExpected).map({ [=12=] * numbers.count + sum })
如何在 Swift 4 中以更优雅的方式完成类似下面的事情,例如使用 map and/or reduce。
为了在此处发布,我简化了代码,但请注意它确实需要使用索引。
var numbers = [50, 20, 70, 80, 90]
var result = [0,0,0]
for number in numbers {
for i in 0...2 {
result[i] += number + i
}
}
最终结果应该是:
[Int] = 3 values {
[0] = 310
[1] = 315
[2] = 320
}
这是等价的
let result = (0...2).map({ index in numbers.reduce(0) { (sum, current) in sum + current + index } })
或者这个,如果你想使用 result
数组
let r = result.enumerated().map({ (index, _) in numbers.reduce(0) { (sum, current) in sum + current + index } })
但效率会更高
let sum = numbers.reduce(0, +)
let resultsExpected = 3
let result = (0..<resultsExpected).map({ [=12=] * numbers.count + sum })