Generic Initializer

init(_:uniquingKeysWith:)

Creates a new dictionary from the key-value pairs in the given sequence, using a combining closure to determine the value for any duplicate keys. 新しい辞書を、与えられたシーケンスの中のキー値ペアから作成します、結合用のクロージャを使って何らかの重複キーに対して値を決定します。

Declaration 宣言

init<S>(_ keysAndValues: S, uniquingKeysWith combine: (Value, Value) throws -> Value) rethrows where S : Sequence, S.Element == (Key, Value)

Parameters パラメータ

keysAndValues

A sequence of key-value pairs to use for the new dictionary. キー値ペアからなるシーケンス、新しい辞書に使うためのもの。

combine

A closure that is called with the values for any duplicate keys that are encountered. The closure returns the desired value for the final dictionary. あるクロージャで、出くわす何らかの重複キーに対するそれら値とともに呼ばれます。このクロージャは、最終的な辞書に対して望む値を返します。

Discussion 解説

You use this initializer to create a dictionary when you have a sequence of key-value tuples that might have duplicate keys. As the dictionary is built, the initializer calls the combine closure with the current and new values for any duplicate keys. Pass a closure as combine that returns the value to use in the resulting dictionary: The closure can choose between the two values, combine them to produce a new value, or even throw an error. あなたは、重複キーを持つかもしれないキー値タプルのシーケンスをあなたが持つ場合、このイニシャライザを使って辞書を作成してください。辞書が組み立てられるとき、このイニシャライザはcombineクロージャを何らかの重複キーに対してその現在および新規の値とともに呼び出します。あるクロージャをcombineとして渡してください、それは結果の辞書において使う値を返します:そのクロージャは2つの値のどちらかを選ぶこと、それらを結合して新しい値を生成すること、またはエラーをスローすることさえ出来ます。

The following example shows how to choose the first and last values for any duplicate keys: 以下の例は、あらゆる重複キーに対して最初と最後の値を選択する方法を示します:


let pairsWithDuplicateKeys = [("a", 1), ("b", 2), ("a", 3), ("b", 4)]


let firstValues = Dictionary(pairsWithDuplicateKeys,
                             uniquingKeysWith: { (first, _) in first })
// ["b": 2, "a": 1]


let lastValues = Dictionary(pairsWithDuplicateKeys,
                            uniquingKeysWith: { (_, last) in last })
// ["b": 4, "a": 3]

See Also 参照

Creating a Dictionary 辞書の作成