Skip to content

Latest commit

 

History

History
58 lines (39 loc) · 1.76 KB

Intersperse.md

File metadata and controls

58 lines (39 loc) · 1.76 KB

Intersperse

[Source | Tests]

Place a given value in between each element of the sequence.

let numbers = [1, 2, 3].interspersed(with: 0)
// Array(numbers) == [1, 0, 2, 0, 3]

let letters = "ABCDE".interspersed(with: "-")
// String(letters) == "A-B-C-D-E"

let empty = [].interspersed(with: 0)
// Array(empty) == []

interspersed(with:) takes a separator value and inserts it in between every element in the sequence.

Detailed Design

A new method is added to sequence:

extension Sequence {
    func interspersed(with separator: Element) -> InterspersedSequence<Self>
}

The new InterspersedSequence type represents the sequence when the separator is inserted between each element. InterspersedSequence conforms to Collection, BidirectionalCollection, RandomAccessCollection and LazySequenceProtocol when the base sequence conforms to those respective protocols.

Complexity

Calling these methods is O(1).

Naming

This method’s and type’s name match the term of art used in other languages and libraries.

Comparison with other languages

Haskell: Has an intersperse function which takes an element and a list and 'intersperses' that element between the elements of the list.

Rust: Has a function called intersperse to insert a particular value between each element.