文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   lexicographicallyPrecedes(_:by:)
汎用インスタンスメソッド
lexicographicallyPrecedes(_:by:)
与えられた predicate (述語) を使用して要素を比較して、辞書の順序でシーケンスが別のシーケンスの前にあるかどうかを示すブール値を返します。
宣言
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence, by areInIncreasingOrder: (Bound, Bound) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence, Bound == OtherSequence.Element
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
パラメータ
other | このシーケンスと比較すべきシーケンス。 |
areInIncreasingOrder | 最初の引数が 2 番目の引数の前に順序付けされるべき場合は true を返す predicate (述語) 。それ以外の場合は false 。 |
戻り値
areInIncreasingOrder で指定された順序で、このシーケンスが other よりも先行する場合は true。それ以外の場合は false。
議論
predicate (述語) は要素に対して 厳密に弱い順序 でなければなりません。つまり、任意の要素 a、b、および c に対して、以下の条件が成り立たなければなりません。
このメソッドは、Unicode への接続を持たない辞書での順序付けの数学的概念を実装します。エンドユーザーに提示する文字列を並べ替える場合は、ローカライズされた比較を実行する String API を代わりに使用して下さい。
複雑さ:O(m)、ここで m はシーケンスの長さと other の長さのうち少ない方です。
- areInIncreasingOrder(a, a) は常に false です。 (非再帰性)
- areInIncreasingOrder(a, b) と areInIncreasingOrder(b, c) が共に true の場合、areInIncreasingOrder(a, c) もまた true です。 (推移比較可能性)
- 2 つの要素が、いずれも predicate (述語) に従って他の要素の前に順序付けされていない場合、比較できない ものです。a と b が比較できず、b と c が比較できない場合、a と c も比較できません。(推移比較不能性)
以下も見よ
Range を Collection と比較
func elementsEqual<OtherSequence>(OtherSequence) -> Bool
このシーケンスと別のシーケンスに同じ要素が同じ順序で含まれているかどうかを示すブール値を返します。
Element が Equatable に準拠する場合利用可能です。
与えられた predicate (述語) を等価テストとして使用して、このシーケンスと別のシーケンスに同じ順序で同じ要素が含まれているかどうかを示すブール値を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に利用可能です。
func lexicographicallyPrecedes<OtherSequence>(OtherSequence) -> Bool
要素を比較するために小なり演算子 (<) を使用して、シーケンスの順序を辞書の順序で別のシーケンスの前にあるかどうかを示すブール値を返します。
Element が Comparable に準拠している場合利用可能。
func starts<PossiblePrefix>(with: PossiblePrefix) -> Bool
シーケンスの最初の要素が別のシーケンスの要素と同じかどうかを示すブール値を返します。
Element が Equatable に準拠する場合利用可能です。
与えられた predicate (述語) を等価テストとして使用して、シーケンスの最初の要素が別のシーケンスの要素と等しいかどうかを示すブール値を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。