/// 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]"