Skip to content

Instantly share code, notes, and snippets.

@LH17
Created January 1, 2019 14:57
Show Gist options
  • Save LH17/8ceccd83b816b621030d47785175a63a to your computer and use it in GitHub Desktop.
Save LH17/8ceccd83b816b621030d47785175a63a to your computer and use it in GitHub Desktop.
Iterator Design Pattern
struct MyBestFilms: Sequence {
let films: [String]
func makeIterator() -> MyBestFilmsIterator {
return MyBestFilmsIterator(films)
}
}
struct MyBestFilmsIterator: IteratorProtocol {
var films: [String]
var cursor: Int = 0
init(_ films: [String]) {
self.films = films
}
mutating func next() -> String? {
defer { cursor += 1 }
return films.count > cursor ? films[cursor] : nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment