2016-11-02 2 views
1

Документация Swift 3 IteratorProtocol гласит: «Копирование итератора безопасно, но продвижение одной копии итератора путем вызова его метода может аннулировать другие копии этого итератора».Перечисление пар элементов в наборе (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

Set соответствует Sequence, так что это довольно легко

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

Если я правильно понял вопрос правильно, OP нужен вложенный цикл, чтобы перечислить все * пар * элементов в наборе. –

+2

@MartinR oops, может быть, но * пары * будут * случайными парами * из-за неупорядоченной природы набора. – vadian

+0

@MartinR, вы правы, мне нужен вложенный цикл, чтобы перечислять все пары элементов в наборе. Я редактировал заголовок вопроса, чтобы сделать это ясно. –

Смежные вопросы