Skip to content

Latest commit

 

History

History
35 lines (26 loc) · 960 Bytes

Indexed.md

File metadata and controls

35 lines (26 loc) · 960 Bytes

Indexed

[Source | Tests]

The enumerated method, but pairing each element with its index instead of an incrementing integer counter.

This is essentially equivalent to zip(x.indices, x):

let numbers = [10, 20, 30, 40, 50]
var matchingIndices: Set<Int> = []
for (i, n) in numbers.indexed() {
    if n.isMultiple(of: 20) { 
        matchingIndices.insert(i) 
    }
}
// matchingIndices == [1, 3]

Detailed Design

The indexed method returns an IndexedCollection type:

extension Collection {
    func indexed() -> IndexedCollection<Self>
}

IndexedCollection scales from a collection up to a random-access collection, depending on its base type. Indexed also conforms to LazySequenceProtocol when the base type conforms.