Instance Method

# index(_:offsetBy:limitedBy:)

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

## Parameters

`i`

A valid index of the collection.

`distance`

The distance to offset `i`. `distance` must not be negative unless the collection conforms to the `BidirectionalCollection` protocol.

`limit`

A valid index of the collection to use as a limit. If `distance > 0`, a limit that is less than `i` has no effect. Likewise, if `distance < 0`, a limit that is greater than `i` has no effect.

## Return Value

An index offset by `distance` from the index `i`, unless that index would be beyond `limit` in the direction of movement. In that case, the method returns `nil`.

## Discussion

The following example obtains an index advanced four positions from a string’s starting index and then prints the character at that position. The operation doesn’t require going beyond the limiting `s.endIndex` value, so it succeeds.

The next example attempts to retrieve an index six positions from `s.startIndex` but fails, because that distance is beyond the index passed as `limit`.

The value passed as `distance` must not offset `i` beyond the bounds of the collection, unless the index passed as `limit` prevents offsetting beyond those bounds.

Complexity: O(1) if the collection conforms to `RandomAccessCollection`; otherwise, O(k), where k is the absolute value of `distance`.

### 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 firstIndex(where: (Entity) -> Bool) -> Int?`

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

`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(of: Entity) -> Int?`

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

Deprecated