Pebble's Diary

プログラマーの作業メモ

swift3 Sequenceプロトコル

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)