AnySortComparator
是 SortComparator 协议
的类型擦除实现。
SortComparator
具有 associatedType
,因此不能用作一等类型。
例如,创建 SortComparator
数组是无效的
let comparators: [SortComparator] // Not Valid!
考虑到 Sequence
协议提供了一个使用 SortComparator
Sequence
进行排序的方法,如果能解除仅使用 SortComparator
的一个具体实现的约束,这将很好。
AnySortComparator
保留了原始比较函数的行为,同时仍然允许修改顺序。
给定 AnySortComparator
的 hashValue
不等于它持有的 'base' 比较器的 hashValue
。 正如预期的那样,如果两个 AnySortComparator
的 'base' 比较器具有相等的 hashValue
并且它们的 order
相同,则它们的 hashValue
将会相等。 或者换句话说
AnySortComparator(KeyValueComparator(\Int.self)).hashValue != KeyValueComparator(\Int.self).hashValue
AnySortComparator(KeyValueComparator(\Int.self)).hashValue == AnySortComparator(KeyValueComparator(\Int.self)).hashValue