Swift 对Dictionary.reduce()中的$0感到困惑
我试图计算股票的总价值,正确的答案是:Swift 对Dictionary.reduce()中的$0感到困惑,swift,swift3,Swift,Swift3,我试图计算股票的总价值,正确的答案是: let stock = [1.5:5, 10:2, 4.99:20, 2.30:5, 8.19:30] let stockSum = stock.reduce(0, { $0 + $1.key * Double($1.value) }) 但我的想法是: ... let stockSum = stock.reduce(0, { $0.key * Double($0.value) + $1.key * Double($1.value) }
let stock = [1.5:5, 10:2, 4.99:20, 2.30:5, 8.19:30]
let stockSum = stock.reduce(0, {
$0 + $1.key * Double($1.value)
})
但我的想法是:
...
let stockSum = stock.reduce(0, {
$0.key * Double($0.value) + $1.key * Double($1.value)
})
它肯定会返回错误,任何人都可以帮我解释一下吗?下面是reduce方法的参数列表
在您的例子中,0被分配给initialResult,这实际上是在迭代时将总和保存到某一点。此initialResult作为$0中的第一个参数传入,而dictionaries的key,value作为$1中的第二个参数传入。因此,您可以看到$1.key和$1.value$0表示合计的部分金额。没有键值属性$1表示您的字典您的代码也可以写成let stockSum=stock.reduce0{total,dic in total+dic.key*Doubledic.value},这样您就可以更好地理解那里发生了什么。
reduce(initialResult: Result, nextPartialResult: (Result, (key: Double, value: Int)) throws -> Result)