文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   sorted(by:)


インスタンスメソッド


sorted(by:)


与えられた predicate (述語) を要素間の比較として使用し、並べ替えたシーケンスの要素を返します。





宣言


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

BoundStrideable に準拠し、Bound.StrideSignedInteger に準拠する場合に使用可能です。


パラメータ


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


戻り値


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


議論


Comparable プロトコルに準拠していない要素のシーケンスを並べ替えたい場合は、渡された最初の要素が 2 番目の要素の前に順序付けされるべきときに true を返す 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"]"


以下も見よ





要素の並べ替え





目次
Xcode の新機能

  • 言語:Swift
  • SDK
  • Xcode 10.0+
  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 戻り値
  • 議論
  • 以下も見よ












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












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












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












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












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












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












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












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












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












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












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












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












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












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












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












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












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