Slide 27
Slide 27 text
Swift will make
your life easier
for (a, b) in (0...2).zipWithFollower() {
print(a, b) // 0,1 1,2 2,nil
}
public struct ZipWithFollower: SequenceType {
public typealias Generator = AnyGenerator<(T.Generator.Element, T.Generator.Element?)>
let sequence: T
public init(_ sequence: T) {
self.sequence = sequence
}
public func generate() -> Generator {
var generator1 = sequence.generate()
var generator2 = sequence.generate()
_ = generator2.next()
return anyGenerator {
guard let element1 = generator1.next() else {
return nil
}
return (element1, generator2.next())
}
}
}
Clean up your control flow