文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Supporting Types   >   PartialRangeFrom   >   sorted(by:)     Beta  


インスタンスメソッド


sorted(by:)


指定された predicate (述語) を要素の比較として並べ替えたシーケンスの要素を返します。





宣言


func sorted(by areInIncreasingOrder: (Bound, Bound) throws -> Bool)  rethrows ->
	 [Bound]


パラメータ


areInIncreasingOrderその最初の引数がその 2 番目の引数の前に順序付けされるべき場合は true を返す predicate (述語)。それ以外の場合は false


戻り値


シーケンスの要素の並べ替えられた配列。


議論


Comparable プロトコルに準拠していない要素のシーケンスを並べ替えたい場合は、渡された最初の要素が 2 番目の要素の前に順序付けされるべきときに true を返すこのメソッドに predicate (述語) を渡します。結果の配列の要素は、与えられた predicate (述語) に従って順序付けされます。


predicate (述語) は要素に対して 厳密に弱い順序 でなければなりません。つまり、任意の要素 a、b、 および c に対して、以下の条件が成り立たなければなりません。


並べ替えアルゴリズムは安定していません。不安定な並べ替えは、areInIncreasingOrder が順序を確立しない要素の相対的な順序を変更する可能性があります。


以下の例では、 predicate (述語) はカスタムの HTTPResponse 型の配列の順序付けを提供します。predicate (述語) は、成功する前にエラーを順序付けし、エラーコードによってエラー応答をソートします。



enum HTTPResponse {
    case ok
    case error(Int)
}

let responses: [HTTPResponse] = [.error(500), .ok, .ok, .error(404), .error(403)]
let sortedResponses = responses.sorted {
    switch ($0, $1) {
    // Order errors by code
    case let (.error(aCode), .error(bCode)):
        return aCode < bCode

    // All successes are equivalent, so none is before any other
    case (.ok, .ok): return false

    // Order errors before successes
    case (.error, .ok): return true
    case (.ok, .error): return false
    }
}
print(sortedResponses)
// Prints "[.error(403), .error(404), .error(500), .ok, .ok]"



このメソッドも使用して、Comparable プロトコルに準拠する要素を降順で並べ替えることもできます。シーケンスを降順で並べ替えるには、大なり演算子 (>) を areInIncreasingOrder パラメータとして渡します。



let students: Set = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
let descendingStudents = students.sorted(by: >)
print(descendingStudents)
// Prints "["Peter", "Kweku", "Kofi", "Akosua", "Abena"]"



関連する sorted() メソッドを呼び出すことは、このメソッドを呼び出して、小なり演算子 (<) を predicate (述語) として渡すことと同じです。



print(students.sorted())
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"
print(students.sorted(by: <))
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"



ベータソフトウェア

このドキュメントには、開発中の API または技術に関する予備情報が含まれています。この情報は変更されることがあり、このドキュメントに従って実装されたソフトウェアは、最終的なオペレーティングシステムソフトウェアでテストする必要があります。

Apple のベータ版ソフトウェアの使用方法の詳細について学ぶ >






目次
Xcode の新機能

  • SDK
  • Xcode 10+     Beta  

  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 戻り値
  • 議論












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)