在Dictionary.reduce()中困惑约$ 0

时间:2017-07-26 09:08:01

标签: 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)
})

肯定会返回错误,有人可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

以下是reduce方法的参数列表

reduce(initialResult: Result, nextPartialResult: (Result, (key: Double, value: Int)) throws -> Result)

在您的情况下,0被分配给initialResult,这实际上在迭代时将总和保存到某个点。此initialResult作为$0中的第一个参数和字典'传入。 key,value作为$1中的第二个参数传递。因此,您会看到$1.key$1.value