Sequenceプロトコルの例 ここでは1以上の奇数を順番に返すものを作ってみた。ちなみにIntの範囲を超えるとクラッシュするが気にしないでもらいたい。(^ ^)
struct Odd : Sequence, IteratorProtocol { typealias Element = Int private var v:Element = 1 public mutating func next() -> Element? { defer { v += 2 } return v } } var odd = Odd() for _ in 0..<5 { print("\(odd.next())") }
結果
Optional(1) Optional(3) Optional(5) Optional(7) Optional(9)