diff --git a/Linked List/LinkedList.playground/Contents.swift b/Linked List/LinkedList.playground/Contents.swift index 76b911310..d1491bb49 100644 --- a/Linked List/LinkedList.playground/Contents.swift +++ b/Linked List/LinkedList.playground/Contents.swift @@ -272,12 +272,12 @@ extension LinkedList { } } -// MARK: - Extension to enable initialization from an Array +// MARK: - Extension to enable initialization from a Sequence extension LinkedList { - convenience init(array: Array) { + convenience init(_ sequence: S) where S: Sequence, S.Element == T { self.init() - array.forEach { append($0) } + sequence.forEach { append($0) } } } diff --git a/Linked List/LinkedList.swift b/Linked List/LinkedList.swift index de8a42c93..77d060c69 100755 --- a/Linked List/LinkedList.swift +++ b/Linked List/LinkedList.swift @@ -266,12 +266,12 @@ extension LinkedList { } } -// MARK: - Extension to enable initialization from an Array +// MARK: - Extension to enable initialization from a Sequence extension LinkedList { - convenience init(array: Array) { + convenience init(_ sequence: S) where S: Sequence, S.Element == T { self.init() - array.forEach { append($0) } + sequence.forEach { append($0) } } } diff --git a/Linked List/Tests/LinkedListTests.swift b/Linked List/Tests/LinkedListTests.swift index b16af05ba..0890804a1 100755 --- a/Linked List/Tests/LinkedListTests.swift +++ b/Linked List/Tests/LinkedListTests.swift @@ -307,6 +307,17 @@ class LinkedListTest: XCTestCase { XCTAssertEqual(nodeCount, list.count) } + func testSequenceInitTypeInfer() { + let arrayInitInfer = LinkedList([1.0, 2.0, 3.0]) + + XCTAssertEqual(arrayInitInfer.count, 3) + XCTAssertEqual(arrayInitInfer.head?.value, 1.0) + XCTAssertEqual(arrayInitInfer.last?.value, 3.0) + XCTAssertEqual(arrayInitInfer[1], 2.0) + XCTAssertEqual(arrayInitInfer.removeLast(), 3.0) + XCTAssertEqual(arrayInitInfer.count, 2) + } + func testArrayLiteralInitTypeInfer() { let arrayLiteralInitInfer: LinkedList = [1.0, 2.0, 3.0]