文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Sequence and Collection Protocols   >   BidirectionalCollection   >   index(_:offsetBy:limitedBy:)


インスタンスメソッド


index(_:offsetBy:limitedBy:)


与えられたインデックスから指定された距離にあるインデックスを返します。ただし、その距離が与えられた制限インデックスを超えていない限り。
必須。デフォルトの実装が供給されます。





宣言


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


パラメータ


iコレクションの有効なインデックス。
distanceオフセット i までの距離(distance)。コレクションが BidirectionalCollection プロトコルに準拠していない限り、distance は負であってはいけません。
limitlimit として使用すべきコレクションの有効なインデックス。distance > 0 の場合、i より小さい制限 (limit) は効果がありません。同様に、distance < 0 の場合、i より大きい制限は効果がありません。


戻り値


インデックス i から distance だけオフセットされたインデックス。ただし、そのインデックスが動作の方向において limit を超えていない限り。その場合 (訳注:そのインデックスが limit を超えた場合)、メソッドは nil を返します。


議論


以下の例では、文字列の開始インデックスから 4 つ進んだインデックスを取得してから、その位置にある文字を印刷します。この操作では、制限された s.endIndex 値を超える必要はないため、成功します。


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


次の例では、s.startIndex から 6 つの位置のインデックスを取得しようとしますが、失敗します。と言うのも、その距離は limit として渡されたインデックスを超えているためです。


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


distance として渡される値は、コレクションの境界を超えて i をオフセットしてはいけません。limit として渡されたインデックスがこれらの境界を超えてオフセットするのを防げない限り。


複雑さ:コレクションが RandomAccessCollection に準拠している場合は O(1)。それ以外の場合は O(k)、ここで kdistance の絶対値です。



デフォルトの実装





BidirectionalCollection の実装


目次
Xcode 11 の新機能

  • 言語:Swift
  • SDK
  • Xcode 10.0+
  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 戻り値
  • 議論
  • デフォルトの実装












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)