2016-11-02 7 views
1

Swift 3 IteratorProtocolマニュアルでは、「イテレータをコピーするのは安全ですが、イテレータのコピーを先に進めてnext()メソッドを呼び出すと、そのイテレータの他のコピーが無効になる可能性があります。Set(Swift 3)の要素の列挙

ので、これは動作しない場合があります。

var i = set.makeIterator() 
    while let obji = i.next() { 
     var j = i 
     while let objj = j.next() { // Possible error : might invalidate i 
      ...some code... 
     } 
    } 

だから、私はこれを書いた:

var objects = [Object](set) 
for i in 0..<objects.count { 
    for j in (i+1)..<objects.count { 
     ...some code... 
    } 
} 

をしかしそこ配列のセットをコピーせずに同じことを行うための方法ではありません?私が正しく質問を理解していれば

答えて

0

SetSequenceに準拠ので、それは

let set = Set<Int>([1, 4, 7, 9]) 
for member in set { 
    print(member) 
} 
+1

非常に簡単です、OPは、セット内のすべての要素*ペア*を列挙するために、ネストされたループを必要とします。 –

+2

@MartinR oopsである可能性がありますが、*ペア*はセットの順序のない性質のために*ランダムペア*になります。 – vadian

+0

@MartinR、あなたは正しい、私はセットの要素のすべてのペアを列挙するためにネストループが必要です。質問のタイトルを編集してそのことを明確にしました。 –

関連する問題