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. 与えられたインデックスから指定された隔たりのインデックスを返します、その隔たりが与えられた限界インデックスを超えない限りは。

Declaration 宣言

func index(_ i: Int, offsetBy distance: Int, limitedBy limit: Int) -> Int?

Parameters パラメータ

i

A valid index of the collection. コレクションのひとつの有効なインデックス。

n

The distance to offset i. n must not be negative unless the collection conforms to the BidirectionalCollection protocol. iを補う間隔。nは、そのコレクションがBidirectionalCollectionプロトコルに準拠するのでない限り、負であってはなりません。

limit

A valid index of the collection to use as a limit. If n > 0, a limit that is less than i has no effect. Likewise, if n < 0, a limit that is greater than i has no effect. 限度として使うためのコレクションの有効なインデックス。n > 0ならば、iより少ない限度は効果を持ちません。同様に、n < 0ならば、iより大きい限度は効果を持ちません。

Return Value 戻り値

An index offset by n from the index i, unless that index would be beyond limit in the direction of movement. In that case, the method returns nil. インデックスiからnだけ補われたインデックス、そのインデックスがlimitを移動方向において越えない限りは。その場合には、このメソッドは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. 以下の例は、文字列の開始インデックスから4位置進んだインデックスを取得して、それからその位置の文字を出力します。演算は、限界であるs.endIndex値を超えていく必要はありません、それでそれは成功します。


let s = "Swift"
if let i = s.index(s.startIndex, offsetBy: 4, limitedBy: s.endIndex) {
    print(s[i])
}
// Prints "t"

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. 次の例はs.startIndexから6位置のインデックスをとりだすことを試みます、しかし失敗します、なぜならその間隔はlimitとして渡されるインデックスを越えるからです。


let j = s.index(s.startIndex, offsetBy: 6, limitedBy: s.endIndex)
print(j)
// Prints "nil"

The value passed as n must not offset i beyond the bounds of the collection, unless the index passed as limit prevents offsetting beyond those bounds. nとして渡される値は、このコレクションの境界を越えてiを補ってはなりません、limitとして渡されるインデックスがそれらの境界を越えて補うのを防止するのでない限りは。

Complexity: O(1) if the collection conforms to RandomAccessCollection; otherwise, O(n), where n is the absolute value of n. 計算量:O(1)、もしコレクションがRandomAccessCollectionに準拠するならば;そうでなければ、O(n)、そこでnnの値の絶対値です。