Intersperse
September 8, 2021 · View on GitHub
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.