2016-06-30 4 views
2

myDictionary.dropFirst()を新しい辞書に変換しようとしています。 dropFirst()はスライスを返します。私はmyDictionaryと同じタイプの新しい辞書が欲しいです。スウィフトでDictionary Sliceを辞書に変換する方法

アレイスライスをlet array = Array(slice)のような配列に変換できます。辞書に相当するものは何ですか?辞書(スライス)を試してみると、コンパイルエラーが発生するArgument labels '(_:)' do not match any available overloads

事前に感謝します。

答えて

5

ArraySliceのようにDictionarySliceのようなものはありません。代わりに、dropFirst()DictionaryのようにキーサブスクリプトをサポートしていないSlice<Dictionary>を返します。ただし、Dictionaryとちょうどあなたができるように、キーと値のペアを持つSlice<Dictionary>をループすることができます

extension Dictionary { 

    init(_ slice: Slice<Dictionary>) { 
     self = [:] 

     for (key, value) in slice { 
      self[key] = value 
     } 
    } 

} 

let dictionary = ["a": 1, "b": 2, "c": 3] 
let smallerDictionary = Dictionary(dictionary.dropFirst()) 
print(smallerDictionary) // ["a": 1, "c": 3] 

私は本当にお勧めしません:

let dictionary = ["a": 1, "b": 2, "c": 3] 

var smallerDictionary: [String: Int] = [:] 

for (key, value) in dictionary.dropFirst() { 
    smallerDictionary[key] = value 
} 

print(smallerDictionary) // ["a": 1, "c": 3] 

拡張は、このビットよりエレガントになるだろうあなたは、キーと値のペアがドロップされる知っている、と

  • ません

    • ので、しかし、これを行います本当にランダムではありません。

    本当にこれをやりたければ、これを行う方法は分かっています。

  • 関連する問題