枚举集合中的元素对(Swift 3)

时间:2016-11-02 20:20:33

标签: iterator set swift3

Swift 3 IteratorProtocol文档说:“复制迭代器是安全的,但是通过调用它的next()方法推进迭代器的一个副本可能会使该迭代器的其他副本无效。”

所以,这可能不起作用:

    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...
    }
}

但是如果没有在数组中复制集合,是不是有办法做同样的事情?

1 个答案:

答案 0 :(得分:0)

Set符合Sequence,因此非常简单

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