文書   >   Swift   >   Array   >   index(_:offsetBy:limitedBy:)
インスタンスメソッド
index(_:offsetBy:limitedBy:)
与えられたインデックスから指定された距離にあるインデックスを返します。ただし、その距離が与えられた制限のインデックスを超えている場合は除きます。
宣言
パラメータ
i | 配列の有効なインデックス。 |
distance | i をオフセットすべき距離。 |
limit | 制限 (limit) として使用すべきコレクションの有効なインデックス。distance > 0 の場合、limit が i より小さい場合、効果がありません。同様に、distance < 0 の場合、limit が i より大きい場合、効果がありません。 |
戻り値
インデックス i からの distance だけオフセットされたインデックス。そのインデックスが動く方向において limit を超えていない限り。その場合、メソッドは nil を返します。
議論
以下の例では、配列の開始インデックスから 4 桁進んだインデックスを取得して、その位置に要素を出力します。この操作では、numbers の制限付きの .endIndex 値を超える必要はないため、成功します。
let numbers = [10, 20, 30, 40, 50]
if let i = numbers.index(numbers.startIndex,
offsetBy: 4,
limitedBy: numbers.endIndex) {
print(numbers[i])
}
// Prints "50"
次の例では、numbers.startIndex から 10 桁の位置にあるインデックスを取得しようとしますが、失敗します。と言うのも、その距離 (distance) は limit として渡されたインデックスを超えているためです。
let j = numbers.index(numbers.startIndex,
offsetBy: 10,
limitedBy: numbers.endIndex)
print(j)
// Prints "nil"
distance として渡される値は、limit として渡されたインデックスがこれらの境界を超えたオフセットを防げない限り、コレクションの境界を超えて i をオフセットしてはいけません。
複雑さ: O(1)
関連
プロトコルから
RandomAccessCollection
以下も見よ
インデックスの操作
空でない配列内の最初の要素の位置。
配列の "最後を過ぎた" 位置、つまり最後の有効なサブスクリプト引数より 1 つ大きい位置。
func index(after: Int) -> Int
与えられたインデックスの直後の位置を返します。
func formIndex(after: inout Int)
与えられたインデックスをその後継者に置き換えます。
func index(before: Int) -> Int
与えられたインデックスの直前の位置を返します。
func formIndex(before: inout Int)
与えられたインデックスをその前にあったインデックスに置き換えます。
func index(Int, offsetBy: Int) -> Int
与えられたインデックスから指定された距離にあるインデックスを返します。
func formIndex(inout Int, offsetBy: Int)
与えられたインデックスを指定された距離だけオフセットします。
func formIndex(inout Int, offsetBy: Int, limitedBy: Int) -> Bool
与えられたインデックスを指定された距離だけオフセットするか、または与えられた制限のインデックスと等しくなるようにします。
func distance(from: Int, to: Int) -> Int
2 つのインデックス間の距離を返します。
昇順で、コレクションをサブスクリプトするのに有効なインデックス。
トップへ
トップへ
トップへ
トップへ
トップへ