2017-04-14 11 views
0
のSet のインデックス
let setOfStrings: Set<String> = ["ONE", "TWO", "THREE"]; 

それはのように振る舞うと、配列、そうsetOfStrings[0]は動作しませんしません取得します。スウィフト

アイデア?

+3

セットにはインデックスがありません。配列の内容を列挙するか、 'Array(setOfStrings)'集合から配列を初期化してインデックスにアクセスできますが、順序は未定義です – Paulw11

+0

ありがとう@ Paulw11 – JayVDiyk

+2

@ Paulw11 'Set'は' Collection'ですが、同様にインデックス(整数*インデックスではない)があります。しかし、Setの要素の順序は不明であるため、インデックスはほとんど利用されません。 – Hamish

答えて

2

次のように、セットの最初の要素にアクセスする場合があります

if let first = setOfStrings.first { 
    print(first) 
} 

すでに精通していると仮定すると:セットすなわち、順不同データ構造です:first値は保証されません"ONE"になる。

あなたはセット(セットで採択された)Collectionを表しているのでしかし、SetIndexはおそらく、あなたの現在のセットのSet.Indexを使用することによって、何を探しているされ、整数(setOfStrings[0])としてインデックスを経由してセット内の要素にアクセスすることはできません、としては次のとおりです。subscript(_:)を使用することにより、あなたは電子特定の要素を取得することができるはず

  • let setOfStrings: Set<String> = ["ONE", "TWO", "THREE"] 
    // for me, it sorted as: {"THREE", "TWO", "ONE"} 
    
    let mySetIndex = setOfStrings.index(setOfStrings.startIndex, offsetBy: 1) 
    
    let secondElemnet = setOfStrings[mySetIndex] // "TWO" 
    

    注こと。

  • index(_:offsetBy:)

指定されたインデックスから指定した距離であるインデックスを返します。

  • mySetIndexデータ型がSetIndex<String>です。