swift - Swift Generic Type Equatable 通过对数组进行排序
问题描述
我正在尝试使我的泛型符合CustomSet
Equatable 但当我尝试对 Equatable func 中的列表数组进行排序时出现以下错误:
对成员“<”的模糊引用
我认为问题在于编译器在比较排序时没有关于值类型的信息,但我不确定如何告诉它它需要什么。这甚至可以对泛型类型进行吗?
目标是说CustomSet
如果list
包含完全相同的值,则等于。
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
为能够<
在 of 的元素上使用运算符list
,从而在 sort上使用运算符list
。
struct CustomSet<T : Comparable> {
var list: [T]
init(_ list: [T]){
self.list = list
}
}
推荐阅读
- scala - Scaladoc:我真的需要每次使用链接时都提供完整路径吗?
- react-native - 当列表大小很大时,FlatList 不稳定 - 反应原生
- python - StereoBM 方法中的视差抛出错误
- java - 当程序在 JAR 中导出时使用 Sqlite JDBC (Intellij)
- vmware - 使用 ovftool 将 vmdk 转换为 ova
- excel - 如何将多个 Word 文件中的表格复制到 Excel 中的单独工作表中,并将工作表命名为 Word doc 的名称?
- c++ - c++:我可以给一个线程一个新值,而它仍在运行还是我必须先结束它?
- java - Gradle 没有在模拟器上构建应用程序
- api - docker-compose 中分离的前端和 php 后端的问题
- python - 如何在运行 PyQt 应用程序时捕获 main 中引发的异常?