提问人:TomTom 提问时间:1/3/2017 更新时间:1/3/2017 访问量:66
隐式定义集合的相等性/排序
Define equality/ordering implicitly for collections
问:
是否可以在 Scala 中为集合定义我自己的相等或排序概念?覆盖并且在这种情况下不起作用,因为我希望有多个实例。equals
hashCode
以下是我大致想到的:(忽略此代码的无效性)
implicit val customEq1(x: Int, y: Int) = x % 8 == y % 8
val customEq2(x: Int, y: Int) = x.toString == y.toString.take(2)
val union = Set(1,15,3).union(Set(3,7,8)) // => Set(1,3,8)
我认为相等/排序是一个类型类,但是像 , 这样的函数似乎没有提供任何这样的功能。diff
union
intersect
答:
-1赞
DeadNight
1/3/2017
#1
如果有多个不同的实现进行比较,则可以为每个实现创建一个具有适当重写的类,然后使用隐式转换强制集合的类型,如下所示:
class MyCompInt { overrides... }
val union = Set[MyCompInt](1, 15, 3).union(...)
上一个:类之间的自定义相等性
下一个:scala:覆盖基本类型的等价物
评论
equals