How to create a generator in Swift?

Viewed 7992

Can I create a generator in Swift?

With iterator, I need store intermediate results, for example:

struct Countdown: IteratorProtocol, Sequence {

    private var value = 0

    init(start: Int) {
        self.value = start
    }

    mutating func next() -> Int? {
        let nextNumber = value - 1
        if nextNumber < 0 {
            return nil
        }

        value -= 1

        return nextNumber
    }
}

for i in Countdown(start: 3) {
    print(i)
} // print 1 2 3

In this example, I need store the value.

In my situation, I want to use generator instead of iterator, because I don't want store the intermediate results of my sequence in each next.

4 Answers
Related