文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Sequence and Collection Protocols BidirectionalCollection
プロトコル
BidirectionalCollection
前方への移動はもちろん後方への移動もサポートするコレクション。
宣言
protocol BidirectionalCollection where Self.Indices : BidirectionalCollection, Self.SubSequence : BidirectionalCollection
概要
双方向コレクション (Bidirectional collection) は、コレクションの startIndex を含まず、何か有効なインデックスから逆方向への横断を提供します。したがって、双方向コレクションは、最後の要素への効率的なアクセスを提供する last プロパティや、要素を逆の順序で表示する reverse() メソッドなど、追加の操作を提供できます。さらに、双方向コレクションでは、suffix(_:) など、いくつかのシーケンスおよびコレクションのメソッドをより効率的に実装しています。
BidirectionalCollection プロトコルへの準拠
カスタム型に BidirectionalProtocol への準拠を追加するには、Collection プロトコルの要件に加えて index(before:) メソッドを実装します。
双方向コレクション内で前後に移動するインデックスは、それぞれの方向に同じ量だけ移動します。つまり、インデックス i が双方向コレクション c になる場合:
- If i >= c.startIndex && i < c.endIndex, c.index(before: c.index(after: i)) == i.
- If i > c.startIndex && i <= c.endIndex c.index(after: c.index(before: i)) == i.
トピックス
関連型
必須。
必須。
コレクションをサブスクリプトするのに有効なインデックスを昇順で表す型。
必須。
コレクションの要素の連続した部分範囲を表すことができるシーケンス。
必須。
インスタンスプロパティ
必須。
コレクションをサブスクリプトするのに有効な、昇順のインデックス。
必須。
コレクションの最後の要素。
必須。
インスタンスメソッド
func distance(from: Self.Index, to: Self.Index) -> Int
2 つのインデックスの間の距離を返します。
必須。 デフォルトの実装が提供されます。
func dropLast(Int) -> Self.SubSequence
指定された数の最後の要素を除くすべてを含む部分シーケンスを返します。
func formIndex(after: inout Self.Index)
与えられたインデックスをその後継者と置き換えます。
必須。
func formIndex(before: inout Self.Index)
与えられたインデックスをその前にあったインデックスと置き換えます。
必須。デフォルトの実装が供給されます。
func index(Self.Index, offsetBy: Int) -> Self.Index
与えられたインデックスから指定された距離にあるインデックスを返します。
必須。デフォルトの実装が供給されます。
func index(Self.Index, offsetBy: Int, limitedBy: Self.Index) -> Self.Index?
与えられたインデックスから指定された距離にあるインデックスを返します。ただし、その距離が与えられた制限インデックスを超えていない限り。
必須。デフォルトの実装が供給されます。
func index(after: Self.Index) -> Self.Index
与えられたインデックスの直後の位置を返します。
必須。
func index(before: Self.Index) -> Self.Index
与えられたインデックスの直前の位置を返します。
必須。
func joined(separator: String) -> String
シーケンスの要素を連結し、各要素間に与えられた区切り記号を追加して、新しい文字列を返します。
Element が String の時利用可能です。
func last(where: (Self.Element) -> Bool) -> Self.Element?
与えられた述語 (predicate) を満たすシーケンスの最後の要素を返します。
func lastIndex(of: Self.Element) -> Self.Index?
指定された値がコレクション内に現れる最後のインデックスを返します。
Element が Equatable に準拠する場合使用可能。
func lastIndex(where: (Self.Element) -> Bool) -> Self.Index?
与えられた述語 (predicate) に一致するコレクション内の最後の要素のインデックスを返します。
func popLast() -> Self.Element?
コレクション内の最後の要素を削除して返します。
Self が SubSequence の時利用可能です。
func removeLast() -> Self.Element
コレクション内の最後の要素を削除して返します。
Self が SubSequence の時利用可能です。
与えられた数の要素をコレクションの末尾から削除します。
Self が SubSequence の時利用可能です。
func reversed() -> ReversedCollection<Self>
コレクションの要素を逆の順序で表示するビューを返します。
func suffix(Int) -> Self.SubSequence
コレクションの最後の要素を含む、与えられた最大長までの部分シーケンスを返します。
サブスクリプト
subscript(Range<Self.Index>) -> Self.SubSequence
コレクションの要素の連続した部分範囲にアクセスします。
必須。
subscript(Self.Index) -> Self.Element
必須。
関連
以下から継承
以下により継承
RandomAccessCollection
準拠型
ClosedRange
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に準拠します。
DefaultIndices
Elements が BidirectionalCollection に準拠している場合に準拠します。
FlattenSequence
Base が BidirectionalCollection に準拠し、Base.Element が BidirectionalCollection に準拠する場合に準拠します。
IndexSet
IndexSet.RangeView
LazyDropWhileSequence
Base が BidirectionalCollection に準拠する場合に準拠します。
LazyFilterSequence
Base が BidirectionalCollection に準拠する場合に準拠します。
LazyMapSequence
Base が BidirectionalCollection に準拠する場合に準拠します。
LazyPrefixWhileSequence
Base が BidirectionalCollection に準拠する場合に準拠します。
LazySequence
Base が BidirectionalCollection に準拠する場合に準拠します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に準拠します。
ReversedCollection
Base が BidirectionalCollection に準拠する場合に準拠します。
String.UnicodeScalarView
String.UTF16View
String.UTF8View
Substring.UnicodeScalarView
Substring.UTF16View
Substring.UTF8View
以下も見よ
Collection の横断
protocol RandomAccessCollection
効率的なランダムアクセスのインデックスの横断をサポートするコレクション。
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)