【发布时间】:2018-08-14 21:56:49
【问题描述】:
如何在 Swift 4 中以更优雅的方式完成类似以下的事情,例如使用 map 和/或 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
}
【问题讨论】:
-
您实际上想要做什么?举一个例子在大多数情况下是有帮助的,但只举一个例子可以证明是反作用的。特别是当您要求针对特定问题寻求更好的解决方案时,因为在这种情况下,您最终可能会得到对实际问题的次优解决方案以及适合特定示例的最佳/优雅解决方案。顺便说一句,您的代码中没有
Dictionary,因此您要么无缘无故地使用了该标签,要么您的代码没有产生预期的结果。 -
let sum = numbers.reduce(0, +); let result = (0...2).map({ $0 + sum })但就像大卫所说的那样,这可能并不能解决你真正的问题。 -
旁注,
numbers似乎没有任何理由成为变量。 -
乔希,这不对。这会产生
[310, 311, 312],这不是 OP 想要的。 -
这是什么意思?您将数字元素的总和放入结果中,加上 index*numbers.count。为什么?
标签: swift dictionary reduce