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: Self.Index, offsetBy distance: Int, limitedBy limit: Self.Index) -> Self.Index?

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. distanceだけインデックスiから埋め合わされるあるインデックス、そのインデックスがその動く方向においてlimitを越えない限り。その場合には、このメソッドはnilを返します。

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. iを補う間隔。distanceは負であってはいけません、そのコレクションがBidirectionalCollectionプロトコルに準拠する場合を除いては。

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. 限度として使うためのコレクションの有効なインデックス。distance > 0ならば、iより少ない限度は効果を持ちません。同様に、distance < 0ならば、iより大きい限度は効果を持ちません。

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.


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.


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

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. distanceとして渡される値は、このコレクションの境界を越えてiを補ってはいけません、limitとして渡されるインデックスがそれらの境界を越えて補うのを防止するのでない限りは。