Content-Length: 468111 | pFad | http://github.com/azureplus/Algorithm/commit/316bffdf1e11e5ce89980f4804bc8934962200c7

38 * iterator refactoring · azureplus/Algorithm@316bffd · GitHub
Skip to content

Commit 316bffd

Browse files
committed
* iterator refactoring
1 parent ffb8e48 commit 316bffd

File tree

6 files changed

+13
-43
lines changed

6 files changed

+13
-43
lines changed

Sources/DoublyLinkedList.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,10 @@ public struct DoublyLinkedList<Element>: CustomStringConvertible, Sequence {
167167
public func makeIterator() -> DoublyLinkedList.Iterator {
168168
var it = head
169169
return AnyIterator {
170-
guard let e = it?.element else {
171-
return nil
172-
}
170+
defer {
173171
it = it?.next
174-
return e
172+
}
173+
return it?.element
175174
}
176175
}
177176

Sources/RedBlackTree.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,8 @@ public struct RedBlackTree<Key: Comparable, Value>: Probable, Collection, Custom
158158
// :returns: RedBlackTree.Generator
159159
//
160160
public func makeIterator() -> RedBlackTree.Iterator {
161-
var index = startIndex
162-
return AnyIterator {
163-
if index < self.endIndex {
164-
let i: Int = index
165-
index += 1
166-
return self[i]
167-
}
168-
return nil
169-
}
161+
var i = indices.makeIterator()
162+
return AnyIterator { i.next().map { self[$0] } }
170163
}
171164

172165
/**

Sources/SortedDictionary.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,8 @@ public struct SortedDictionary<Key: Comparable, Value>: Probable, Collection, Eq
120120
}
121121

122122
public func makeIterator() -> SortedDictionary.Iterator {
123-
var index = startIndex
124-
return AnyIterator {
125-
guard index < self.endIndex else { return nil }
126-
defer {
127-
index += 1
128-
}
129-
return self[index]
130-
}
123+
var i = indices.makeIterator()
124+
return AnyIterator { i.next().map { self[$0] } }
131125
}
132126

133127
/**

Sources/SortedMultiDictionary.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,8 @@ public struct SortedMultiDictionary<Key: Comparable, Value>: Probable, Collectio
120120
}
121121

122122
public func makeIterator() -> SortedMultiDictionary.Iterator {
123-
var index = startIndex
124-
return AnyIterator {
125-
if index < self.endIndex {
126-
let i: Int = index
127-
index += 1
128-
return self[i]
129-
}
130-
return nil
131-
}
123+
var i = indices.makeIterator()
124+
return AnyIterator { i.next().map { self[$0] } }
132125
}
133126

134127
/**

Sources/SortedMultiSet.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,8 @@ public struct SortedMultiSet<T: Comparable>: Probable, Collection, Equatable, Cu
157157
// :returns: SortedMultiSet.Generator
158158
//
159159
public func makeIterator() -> SortedMultiSet.Iterator {
160-
var index = startIndex
161-
return AnyIterator {
162-
if index < self.endIndex {
163-
let i = index
164-
index += 1
165-
return self[i]
166-
}
167-
return nil
168-
}
160+
var i = indices.makeIterator()
161+
return AnyIterator { i.next().map { self[$0] } }
169162
}
170163

171164
/**

Sources/SortedSet.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,8 @@ public struct SortedSet<T: Comparable>: Probable, Collection, Equatable, CustomS
137137
}
138138

139139
public func makeIterator() -> SortedSet.Iterator {
140-
var i = indices.makeIterator()
141-
return AnyIterator {
142-
i.next().map { self[$0] }
143-
}
140+
var i = indices.makeIterator()
141+
return AnyIterator { i.next().map { self[$0] } }
144142
}
145143

146144
/**

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/azureplus/Algorithm/commit/316bffdf1e11e5ce89980f4804bc8934962200c7

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy