Instance Method

# firstIndex(where:)

Returns the first index in which an element of the collection satisfies the given predicate.

## Parameters

`predicate`

A closure that takes an element as its argument and returns a Boolean value that indicates whether the passed element represents a match.

## Return Value

The index of the first element for which `predicate` returns `true`. If no elements in the collection satisfy the given predicate, returns `nil`.

## Discussion

You can use the predicate to find an element of a type that doesn’t conform to the `Equatable` protocol or to find an element that matches particular criteria. Here’s an example that finds a student name that begins with the letter “A”:

Complexity: O(n), where n is the length of the collection.

### Manipulating Indices

`func distance(from: Int, to: Int) -> Int`

Returns the distance between two indices.

`var indices: DefaultIndices<Entity.ChildCollection>`

The indices that are valid for subscripting the collection, in ascending order.

`func firstIndex(of: Entity) -> Int?`

Returns the first index where the specified value appears in the collection.

`func formIndex(inout Int, offsetBy: Int)`

Offsets the given index by the specified distance.

`func formIndex(inout Int, offsetBy: Int, limitedBy: Int) -> Bool`

Offsets the given index by the specified distance, or so that it equals the given limiting index.

`func formIndex(after: inout Int)`

Replaces the given index with its successor.

`func index(Int, offsetBy: Int) -> Int`

Returns an index that is the specified distance from the given index.

`func index(Int, offsetBy: Int, limitedBy: Int) -> Int?`

Returns an index that is the specified distance from the given index, unless that distance is beyond a given limiting index.

`func index(of: Entity) -> Int?`

Returns the first index where the specified value appears in the collection.

Deprecated