是否有可能在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
似乎没有提供任何此类功能。
答案 0 :(得分:-1)
如果您有多个不同的实现进行比较,您可以使用适当的覆盖为每个实现创建一个类,然后使用隐式转换强制该类的类型,如下所示:
class MyCompInt { overrides... }
val union = Set[MyCompInt](1, 15, 3).union(...)