2017-01-03 37 views
0

是否可以定義我自己的平等概念或對Scala中的集合進行排序?覆蓋equalshashCode在這種情況下不起作用,因爲我想有多個實例。爲集合隱式定義相等/排序

這大致就是我腦子裏想的:(忽略此代碼的無效)

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) 

我想像的平等/排序是一個類型類,但像例如功能diffunion,intersect似乎沒有提供任何此類功能。

+1

的可能的複製[我怎樣才能定義一個自定義的相等操作,將被不可變的設置比較方法](http://stackoverflow.com/questions/7681183/how-can-i-define-a-custom-equality-operation-that-will - 被使用的不可變集) – DeadNight

+0

對「重複」問題的回答表明,重寫「equals」,這不是我想要的,正如我的問題所解釋的。 – TomTom

回答

-1

如果您有比較多不同的實現,你可以爲每個與適當的替代類,然後強制設定與隱式轉換的類型,像這樣:

class MyCompInt { overrides... } 
val union = Set[MyCompInt](1, 15, 3).union(...)