Skip to content

Instantly share code, notes, and snippets.

@peterkos
Created January 3, 2024 04:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterkos/a09ed8c23ea7a2e402d5c7ec398014a6 to your computer and use it in GitHub Desktop.
Save peterkos/a09ed8c23ea7a2e402d5c7ec398014a6 to your computer and use it in GitHub Desktop.
struct OptionalComparator<T: Comparable>: SortComparator {
typealias Compared = T?
var order: SortOrder = .forward
func compare(_ lhs: T?, _ rhs: T?) -> ComparisonResult {
return switch (lhs, rhs) {
case (_, nil):
order == .forward ? .orderedDescending : .orderedAscending
default:
order == .forward ? .orderedAscending : .orderedDescending
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment