Swift 通用类型 Equatable 按数组排序

Swift Generic Type Equatable by sorting array

我试图使我的泛型 CustomSet 符合 Equatable 但当我尝试对 Equatable 函数中的列表数组进行排序时出现以下错误:

Ambiguous reference to member '<'

我认为问题是编译器在比较排序时没有关于值类型的信息,但我不确定如何告诉它它需要什么。甚至可以对泛型类型执行此操作吗?

如果 list 包含完全相同的值,则目标是说 CustomSet 相等。

struct CustomSet<T : Equatable> {
    var list: [T]
    init(_ list: [T]){
        self.list = list
    }
}

extension CustomSet : Equatable {
    static func == (lhs: CustomSet, rhs: CustomSet) -> Bool {
        return lhs.list.count == rhs.list.count && lhs.list.sorted(by: <) == rhs.list.sorted(by: <)
    }
}

您需要将泛型类型参数限制为 Comparable,以便能够对 list 的元素使用 < 运算符,从而对 list.[= 进行排序15=]

struct CustomSet<T : Comparable> {
    var list: [T]
    init(_ list: [T]){
        self.list = list
    }
}