Skip to content

Commit 565408d

Browse files
committed
Improved LinkedList: init from Sequence
1 parent 2fdd8b8 commit 565408d

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

Linked List/LinkedList.playground/Contents.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,12 +272,12 @@ extension LinkedList {
272272
}
273273
}
274274

275-
// MARK: - Extension to enable initialization from an Array
275+
// MARK: - Extension to enable initialization from a Sequence
276276
extension LinkedList {
277-
convenience init(array: Array<T>) {
277+
convenience init<S>(_ sequence: S) where S: Sequence, S.Element == T {
278278
self.init()
279279

280-
array.forEach { append($0) }
280+
sequence.forEach { append($0) }
281281
}
282282
}
283283

Linked List/LinkedList.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,12 +266,12 @@ extension LinkedList {
266266
}
267267
}
268268

269-
// MARK: - Extension to enable initialization from an Array
269+
// MARK: - Extension to enable initialization from a Sequence
270270
extension LinkedList {
271-
convenience init(array: Array<T>) {
271+
convenience init<S>(_ sequence: S) where S: Sequence, S.Element == T {
272272
self.init()
273273

274-
array.forEach { append($0) }
274+
sequence.forEach { append($0) }
275275
}
276276
}
277277

Linked List/Tests/LinkedListTests.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,17 @@ class LinkedListTest: XCTestCase {
307307
XCTAssertEqual(nodeCount, list.count)
308308
}
309309

310+
func testSequenceInitTypeInfer() {
311+
let arrayInitInfer = LinkedList([1.0, 2.0, 3.0])
312+
313+
XCTAssertEqual(arrayInitInfer.count, 3)
314+
XCTAssertEqual(arrayInitInfer.head?.value, 1.0)
315+
XCTAssertEqual(arrayInitInfer.last?.value, 3.0)
316+
XCTAssertEqual(arrayInitInfer[1], 2.0)
317+
XCTAssertEqual(arrayInitInfer.removeLast(), 3.0)
318+
XCTAssertEqual(arrayInitInfer.count, 2)
319+
}
320+
310321
func testArrayLiteralInitTypeInfer() {
311322
let arrayLiteralInitInfer: LinkedList = [1.0, 2.0, 3.0]
312323

0 commit comments

Comments
 (0)