2017-07-26 116 views
0

我試着去總結一隻股票的總價值,正確的答案是:

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) 
}) 

肯定返回一個錯誤,任何人都可以幫我解釋一下嗎?

+4

$ 0代表總結了部分金額。沒有關鍵的價值屬性。 $ 1代表你的字典 –

+3

您的代碼也可以寫成'讓stockSum = stock.reduce(0){總,DIC在 總+ dic.key *雙(dic.value) }'這樣你就可以更好地理解怎麼回事在那裏。 –

回答

1

下面是該reduce方法

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

在你的情況的參數列表,0分配給initialResult基本上保存總和達到一定點而迭代。此initialResult傳入如$0所述第一參數和所述的字典鍵,值作爲在$1第二參數傳遞。因此,你看到$1.key$1.value