Skip to content

Instantly share code, notes, and snippets.

@jtbandes
Created May 3, 2017 06:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtbandes/02c7fd125b73f621f03c5d69ac0a94d4 to your computer and use it in GitHub Desktop.
Save jtbandes/02c7fd125b73f621f03c5d69ac0a94d4 to your computer and use it in GitHub Desktop.

Where is this Character.init(String) frame coming from?

extension String {
func lazyComponents(separatedBy sep: Character) -> AnySequence<String> {
return AnySequence<String> { [cv = self.characters] () -> AnyIterator<String> in
var current = cv.startIndex
var finished = false
return AnyIterator<String> {
if finished {
return nil
}
var prev = current
while current < cv.endIndex && cv[current] != sep {
cv.formIndex(after: &current)
}
defer {
if current < cv.endIndex {
cv.formIndex(after: &current)
}
else {
finished = true
}
}
return String(cv[prev..<current])
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment