SequenceとIteratorProtocolを使ってfor-inですべてのデータを取り出す書き方のサンプルです。
SequenceとIteratorProtocolのサンプル
class T {
var n = 1;
init(_ n: Int) {
self.n = n
}
}
class C: Sequence, IteratorProtocol {
typealias Element = T
var ta = [T](repeating: T(1), count: 100)
var i = 0
func next() -> T? {
guard i < ta.count else {
i = 0
return nil
}
let r = ta[i]
i += 1
return r
}
}
var c = C()
for e in c {
print(e.n)
}