Swift で辞書に map() を適用する最もクリーンな方法は何ですか? 質問する

Swift で辞書に map() を適用する最もクリーンな方法は何ですか? 質問する

辞書内のすべてのキーに関数をマップしたいと思います。次のようなものが機能することを期待していましたが、フィルターを辞書に直接適用することはできません。これを実現する最もクリーンな方法は何ですか?

この例では、各値を 1 ずつ増やそうとしています。ただし、これはこの例では付随的なものであり、主な目的は辞書に map() を適用する方法を見つけることです。

var d = ["foo" : 1, "bar" : 2]

d.map() {
    $0.1 += 1
}

ベストアンサー1

スイフト4+

朗報です! Swift 4 には、mapValues(_:)同じキーを持ちながら値が異なる辞書のコピーを作成するメソッドが含まれています。また、任意のタプルのシーケンスからを作成するための と および初期化子を返すオーバーfilter(_:)ロードも含まれています。つまり、キーと値の両方を変更したい場合は、次のように記述できます。Dictionaryinit(uniqueKeysWithValues:)init(_:uniquingKeysWith:)Dictionary

let newDict = Dictionary(uniqueKeysWithValues:
    oldDict.map { key, value in (key.uppercased(), value.lowercased()) })

また、辞書を結合したり、欠落している要素をデフォルト値に置き換えたり、値をグループ化したり (コレクションを何らかの関数にマッピングした結果をキーとして、コレクションを配列の辞書に変換したり) するための新しい API もあります。

提案の議論の中で、SE-0165これらの機能を導入した では、この Stack Overflow の回答を何度も取り上げましたが、賛成票の数の多さが需要の高さを証明したと思います。Swift をより良くするためのご協力に感謝します。

おすすめ記事