文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   prefix(upTo:)
インスタンスメソッド
prefix(upTo:)
コレクションの先頭から指定された位置を含まない、そこまでの部分シーケンスを返します。
宣言
func prefix(upTo end: Bound) -> Range<Bound>
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
パラメータ
end | 結果の部分シーケンスの "終わりを過ぎた" インデックス。end はコレクションの有効なインデックスでなければなりません。 |
戻り値
end の位置を含まない、そこまでの部分シーケンス。
議論
結果の部分シーケンスには、end の位置に要素が 含まれません。以下の例では、整数の配列の中の 40 番のインデックスを検索し、その後配列の接頭辞 (prefix) をそのインデックスを含まずそこまで出力します。
let numbers = [10, 20, 30, 40, 50, 60]
if let i = numbers.firstIndex(of: 40) {
print(numbers.prefix(upTo: i))
}
// Prints "[10, 20, 30]"
prefix(through:) メソッドを使用することは、コレクションのサブスクリプトとして部分閉鎖範囲を使用することと同じです。prefix(through:) よりもサブスクリプト表記が好まれます。
if let i = numbers.firstIndex(of: 40) {
print(numbers[...i])
}
// Prints "[10, 20, 30, 40]"
コレクションの開始インデックスを end パラメータとして渡すと、空の部分シーケンスになります。
print(numbers.prefix(upTo: numbers.startIndex))
// Prints "[]"
prefix(upTo:) メソッドを使用することは、コレクションのサブスクリプトとして部分半開放範囲を使用することと同じです。prefix(upTo:) よりもサブスクリプト記法が好まれます。
if let i = numbers.firstIndex(of: 40) {
print(numbers[..<i])
}
// Prints "[10, 20, 30]"
複雑さ:O(1)
以下も見よ
要素の選択
func filter((Bound) -> Bool) -> [Bound]
与えられた predicate (述語) を満たすシーケンスの要素を順番に含む配列を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func prefix(Int) -> Range<Bound>
コレクションの最初の要素を含む、指定された最大長までの部分シーケンスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func prefix(through: Bound) -> Range<Bound>
コレクションの先頭から指定された位置までの部分シーケンスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func prefix(while: (Bound) -> Bool) -> Range<Bound>
predicate (述語) が false を返し、残りの要素をスキップするまで、最初の要素を含む部分シーケンスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func suffix(Int) -> Range<Bound>
コレクションの最後の要素を含む、与えられた最大長までの部分シーケンスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func suffix(from: Bound) -> Range<Bound>
指定された位置からコレクションの最後までの部分シーケンスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。