文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   index(_:offsetBy:limitedBy:)
インスタンスメソッド
index(_:offsetBy:limitedBy:)
与えられたインデックスから指定された距離にあるインデックスを、その距離が与えられた制限インデックスを超えていない限り返します。
宣言
func index(_ i: Bound, offsetBy distance: Int, limitedBy limit: Bound) -> Bound?
パラメータ
i | 配列の有効なインデックス。 |
distance | offset i までの距離。 |
limit | 限界として使用すべきコレクションの有効なインデックス。distance > 0 の場合、limit は、効果があるためには i より大きい必要があります。同様に、distance < 0 の場合、limit は 効果があるためには i より小さい必要があります。 |
戻り値
そのインデックスが移動方向の限界 (limit) を超えない限り、インデックス i からの distance だけオフセットされたインデックス。その場合、このメソッドは nil を返します。
議論
以下の例では、配列の開始インデックスから 4 つ進んだ位置にあるインデックスを取得し、その位置にある要素を出力します。この操作では、制限する numbers.endIndex の値を超える必要はないため、成功します。
let numbers = [10, 20, 30, 40, 50]
let i = numbers.index(numbers.startIndex, offsetBy: 4)
print(numbers[i])
// Prints "50"
次の例では、numbers.startIndex から 10 番目のインデックスを取得しようとしますが、その距離は limit として渡されたインデックスを超えているため失敗します。
let j = numbers.index(numbers.startIndex, offsetBy: 10, limitedBy: numbers.endIndex) print(j) // Prints "nil"
distance として渡される値は、インデックスが limit として渡されてそれらの境界を越えてオフセットするのを妨げない限り、コレクションの境界を超えて i をオフセットしてはなりません。
複雑さ:O(1)
以下も見よ
インデックスの操作
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
昇順でコレクションをサブスクライブするのに有効なインデックス。
Index が Strideable に準拠し、Indices が Range<Self.Index> であり、および Index.Stride が Int の場合に使用可能です。
範囲をサブスクリプトするために有効なインデックス。昇順に並べられます。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func index(after: Range<Bound>.Index) -> Range<Bound>.Index
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func formIndex(after: inout Bound)
与えられたインデックスをその後継と置き換えます。
func index(before: Range<Bound>.Index) -> Range<Bound>.Index
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func formIndex(before: inout Bound)
与えられたインデックスをその先祖と置き換えます。
func formIndex(inout Bound, offsetBy: Int)
与えられたインデックスを指定された距離だけオフセットします。
func index(Range<Bound>.Index, offsetBy: Int) -> Range<Bound>.Index
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func formIndex(inout Bound, offsetBy: Int, limitedBy: Bound) -> Bool
与えられたインデックスを指定された距離だけオフセットするか、または与えられた制限インデックスと等しくなるようにオフセットします。
func distance(from: Range<Bound>.Index, to: Range<Bound>.Index) -> Int
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
与えられたハッシャーにそれらを供給することによって、この値の必須コンポーネントをハッシュします。
Bound が Hashable に準拠する時使用可能です。