0001 // MARK: - Eager 0002 0003 // MARK: Cycle n 0004 0005 public extension CollectionType { 0006 0007 /// Returns an array of n cycles of self. 0008 /// ```swift 0009 /// [1, 2, 3].cycle(2) 0010 /// 0011 /// [1, 2, 3, 1, 2, 3] 0012 /// ``` 0013 @warn_unused_result 0014 func cycle(n: Int) -> [Generator.Element] { 0015 var cycled: [Generator.Element] = [] 0016 cycled.reserveCapacity(underestimateCount() * n) 0017 for _ in 0..<n { 0018 cycled.appendContentsOf(self) 0019 } 0020 return cycled 0021 } 0022 } 0023 0024 // MARK: - Lazy 0025 0026 // MARK: Cycle n 0027 /// :nodoc: 0028 public struct CycleNGen<C
Cycle.swift:53 func cycle(n: Int) -> CycleNGen<Self> {Cycle.swift:54 return CycleNGen(inner: self, innerGen: generate(), n: n): CollectionType> : GeneratorType, LazySequenceType { 0029 0030 private let inner
Cycle.swift:30 private let inner: CCycle.swift:31 private var innerGen: C.GeneratorCycle.swift:34 public mutating func next() -> C.Generator.Element? {: C 0031 private var innerGen
Cycle.swift:38 if n > 0 { innerGen = inner.generate() }: C.Generator 0032 private var n
Cycle.swift:36 if let next = innerGen.next() { return next }Cycle.swift:38 if n > 0 { innerGen = inner.generate() }: Int 0033 /// :nodoc: 0034 public mutating func next() -> C.Generator.Element? { 0035 while true { 0036 if let next = innerGen.next() { return next } 0037 n -= 1 0038 if n > 0 { innerGen = inner.generate() } 0039 else { return nil } 0040 } 0041 } 0042 } 0043 0044 public extension LazySequenceType where Self : CollectionType { 0045 0046 /// Returns a generator of n cycles of self. 0047 /// ```swift 0048 /// [1, 2, 3].lazy.cycle(2) 0049 /// 0050 /// 1, 2, 3, 1, 2, 3 0051 /// ``` 0052 @warn_unused_result 0053 func cycle(n: Int) -> CycleNGen<Self> { 0054 return CycleNGen(inner: self, innerGen: generate(), n: n) 0055 } 0056 } 0057 0058 // MARK: Cycle infinite 0059 /// :nodoc: 0060 public struct CycleGen
Cycle.swift:37 n -= 1Cycle.swift:38 if n > 0 { innerGen = inner.generate() }<C
Cycle.swift:83 func cycle() -> CycleGen<Self> {Cycle.swift:84 return CycleGen(inner: self, innerGen: generate()): CollectionType> : GeneratorType, LazySequenceType { 0061 0062 private let inner
Cycle.swift:62 private let inner: CCycle.swift:63 private var innerGen: C.GeneratorCycle.swift:65 public mutating func next() -> C.Generator.Element? {: C 0063 private var innerGen
Cycle.swift:66 for ;;innerGen = inner.generate() {: C.Generator 0064 /// :nodoc: 0065 public mutating func next() -> C.Generator.Element? { 0066 for ;;innerGen = inner.generate() { 0067 if let next = innerGen.next() { 0068 return next 0069 } 0070 } 0071 } 0072 } 0073 0074 public extension CollectionType { 0075 0076 /// Returns an infinite generator of cycles of self. 0077 /// ```swift 0078 /// [1, 2, 3].cycle() 0079 /// 0080 /// 1, 2, 3, 1, 2, 3, 1... 0081 /// ``` 0082 @warn_unused_result 0083 func cycle() -> CycleGen<Self> { 0084 return CycleGen(inner: self, innerGen: generate()) 0085 } 0086 } 0087
Cycle.swift:66 for ;;innerGen = inner.generate() {Cycle.swift:67 if let next = innerGen.next() {