Skip to content

Instantly share code, notes, and snippets.

@hollance
Created August 15, 2014 07:11
Show Gist options
  • Select an option

  • Save hollance/61b6ed9923386212e6b3 to your computer and use it in GitHub Desktop.

Select an option

Save hollance/61b6ed9923386212e6b3 to your computer and use it in GitHub Desktop.
Explore Swift Challenge #2
struct TakeWhile<S: SequenceType>: SequenceType {
private let seq: S
private let block: (S.Generator.Element) -> Bool
init(_ seq: S, block: (S.Generator.Element) -> Bool) {
self.seq = seq
self.block = block
}
func generate() -> GeneratorOf<S.Generator.Element> {
var gen = seq.generate()
return GeneratorOf<S.Generator.Element> {
if let element = gen.next() {
if self.block(element) {
return element
}
}
return nil
}
}
}
Array(TakeWhile(["a", "a", "a", "b", "c"]) { $0 == "a" })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment