Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. struct Candies {
  2. let candies: [String]
  3. }
  4.  
  5. extension Candies: Sequence {
  6. func makeIterator() -> CandiesIterator {
  7. return CandiesIterator(sequence: candies, current: 0)
  8. }
  9. }
  10.  
  11. struct CandiesIterator: IteratorProtocol {
  12.  
  13. let sequence: [String]
  14. var current = 0
  15.  
  16. mutating func next() -> String? {
  17. defer { current += 1 }
  18. return sequence.count > current ? sequence[current] : nil
  19. }
  20. }
  21.  
  22. struct Whatevers<T> {
  23. let whatevers: [T]
  24. }
  25.  
  26. extension Whatevers: Sequence {
  27. func makeIterator() -> Whatevers<T>.Iterator {
  28. return WhateversIterator(sequence: whatevers, current: 0)
  29. }
  30. }
  31.  
  32.  
  33. struct WhateversIterator<T>: IteratorProtocol {
  34. let sequence: [T]
  35. var current = 0
  36.  
  37. mutating func next() -> WhateversIterator.Element? {
  38. defer { current += 1 }
  39. return sequence.count > current ? sequence[current] : nil
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement