文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Supporting Types   >   EnumeratedSequence   >   lexicographicallyPrecedes(_:by:)
汎用インスタンスメソッド
lexicographicallyPrecedes(_:by:)
与えられた predicate (述語) を使用して、要素を比較する、辞書の順序でシーケンスが別のシーケンスの前にあるかどうかを示すブール値を返します。
宣言
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence, by areInIncreasingOrder: ((offset: Int, element: Base.Element), (offset: Int, element: Base.Element)) throws -> Bool) rethrows -> Bool where OtherSequence : Sequence, (offset: Int, element: Base.Element) == OtherSequence.Element
パラメータ
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 も比較できません。(推移不能性)
関連
汎用の制約
OtherSequence : Sequence
Self.Element == OtherSequence.Element