2015-06-19 26 views
2

試圖將字典中的整數加在一起。例如:將字典中的整數加在一起

var dictionary = ["one": 1, "two": 2, "three": 3, "four": 4, "five": 5] 

我希望得到的總和1 + 2 + 3 + 4 + 5 = 15

我理解它可能會需要一個循環像

for (n, i) in dictionary { 
    *some math function* 
} 

任何幫助將不勝感激,也許我只是在想這個?

回答

1

您可以使用reduce:combine:來獲得總和。

使用Swift 2.0,reduce:Combine:被添加到SequenceType的協議擴展中。因此,它可用於Array,Set或Dictionary等所有SequenceType。

dictionary.reduce(0) { 
    sum, item in 
    return sum + item.1 
} 

閉包內的項是代表每個(鍵,值)對的元組。因此,item.0是關鍵,其中item.1是值。總和的初始值爲0,然後每次迭代發生時,sum將添加到從字典中提取的值中。

你也可以把它寫在短,

dictionary.reduce(0) { return $0 + $1.1 } 

雖然雨燕的舊版本,它有減少的方法,只有陣列。所以,我們能先取得陣列和應用降低:結合起來,得到的總和,

let a = dictionary.values.array.reduce(0) { return $0 + $1 } 
+0

[ 「A」:1, 「B」:2, 「C」:3] .MAP {$ 1}。降低(0,combine:+) –

+0

@ChristianDietrich,只看到我的版本縮短而已。 – Sandeep

+0

這似乎不適合我。我的字典類型沒有名爲reduce的成員。 – iNick