文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Supporting Types   >   RangeExpression   >   relative(to:)
汎用インスタンスメソッド
relative(to:)
与えられたコレクション内のこの範囲の式によって記述されるインデックスの範囲を返します。
必須。
宣言
func relative<C>(to collection: C) -> Range<Self.Bound> where C : Collection, Self.Bound == C.Index
パラメータ
collection | この範囲式に関して評価するためのコレクション。 |
戻り値
collection をスライスするのに適した範囲。返される範囲は、collection の境界内にあることが保証されていません。呼び出し元は、ユーザーが直接提供する範囲と同じ戻り値に同じ前提条件を適用する必要があります。
議論
relative(to:) メソッドを使用すると、その端点の片方または両方が欠落している可能性のある範囲の式を、両辺に結合された具象範囲に変換できます。以下の例では、このメソッドを使用して、配列インスタンスを使用して範囲の下限を追加して、部分範囲を最大 4 にした半開放範囲に変換します。
let numbers = [10, 20, 30, 40, 50, 60, 70]
let upToFour = ..<4
let r1 = upToFour.relative(to: numbers)
// r1 == 0..<4
r1 の範囲は、numbers (数値) 配列の開始インデックスであるため、下端が 0 で囲まれています。relative(to:) に渡されたコレクションが別のインデックスで始まる場合、代わりにそのインデックスは下限として使用されます。次の例は、インデックス 2 から始まる numbers のスライスを作成し、その後 relative(to:) でスライスを使用して upToFour を具象範囲に変換します。
let numbersSuffix = numbers[2...] // numbersSuffix == [30, 40, 50, 60, 70] let r2 = upToFour.relative(to: numbersSuffix) // r2 == 2..<4
このメソッドは、作成する具象範囲が必要な場合にのみ使用して下さい。範囲の式を使用してコレクションのスライスにアクセスするには、範囲の式をそのパラメータとして、使用するコレクションの汎用サブスクリプトを使用します。
let numbersPrefix = numbers[upToFour]
// numbersPrefix == [10, 20, 30, 40]
関連
汎用の制約
C : Collection
Self.Bound == C.Index