Generic Instance Method 総称体インスタンスメソッド

compactMapValues(_:)

Returns a new dictionary containing only the key-value pairs that have non-nil values as the result of transformation by the given closure. 与えられたクロージャによる変換の結果として非nilを持つキー値ペアだけを含んでいる新しい辞書を返します。

Declaration 宣言

func compactMapValues<T>(_ transform: (Value) throws -> T?) rethrows -> Dictionary<Key, T>

Parameters パラメータ

transform

A closure that transforms a value. transform accepts each value of the dictionary as its parameter and returns an optional transformed value of the same or of a different type. 値を変換するクロージャ。transformは辞書の各値をそれのパラメータとして受け取ります、そして同じまたは異なる型のあるオプショナルの変換済みの値を返します。

Return Value 戻り値

A dictionary containing the keys and non-nil transformed values of this dictionary. この辞書のキーと非nilの変換済値を含んでいるある辞書。

Discussion 解説

Use this method to receive a dictionary with non-optional values when your transformation produces optional values. このメソッドを使うことで非オプショナル値での辞書を受け取ってください、あなたの変換がオプショナル値を生成する時に。

In this example, note the difference in the result of using mapValues and compactMapValues with a transformation that returns an optional Int value. この例において、mapValuescompactMapValuesを、オプショナルInt値を返す変換とともに使う結果の違いに注意してください。


let data = ["a": "1", "b": "three", "c": "///4///"]


let m: [String: Int?] = data.mapValues { str in Int(str) }
// ["a": Optional(1), "b": nil, "c": nil]


let c: [String: Int] = data.compactMapValues { str in Int(str) }
// ["a": 1]

Complexity: O(m + n), where n is the length of the original dictionary and m is the length of the resulting dictionary. 計算量:O(m + n)、ここでnは元の辞書の長さで、mは結果の辞書の長さです。

See Also 参照

Transforming a Dictionary 辞書の変形