swift-any-sort-comparator

1.0.0

roanutil/swift-any-sort-comparator

What's New

Initial Release

2022-06-05T05:00:35Z

AnySortComparator

CI codecov

AnySortComparator is a type erased implementation of the SortComparator protocol.

The Problem

SortComparator has an associatedType and therefore cannot be used as a first class type.

For example, it is not valid to create an array of SortComparators:

let comparators: [SortComparator] // Not Valid!

Considering that the Sequence protocol offers a method for sorting with a Sequence of SortComparators, it would be nice to shake the constraint of only one concrete implementation of SortComparator.

The Solution

AnySortComparator preserves the behavior of the original compare function while still allowing mutation of the order.

Hashable

The hashValue of a given AnySortComparator is not equal to the hashValue of the 'base' comparator it holds. As expected, the hashValue of two AnySortComparators will be equal if their 'base' comparators have equal hashValues and their orders are the same. Or put another way:

AnySortComparator(KeyValueComparator(\Int.self)).hashValue != KeyValueComparator(\Int.self).hashValue

AnySortComparator(KeyValueComparator(\Int.self)).hashValue == AnySortComparator(KeyValueComparator(\Int.self)).hashValue

Description

  • Swift Tools 5.5.0
View More Packages from this Author

Dependencies

  • None
Last updated: Sat Mar 16 2024 10:42:49 GMT-0900 (Hawaii-Aleutian Daylight Time)