2017-01-03 15 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) 

私は平等/順序は型クラスであることを想像するが、例えばのような機能だろうdiffunionintersectは、このような機能を提供していないようです。

+1

の可能性のある重複[不変セット比較メソッドで使用されるカスタム等価演算をどのように定義できますか?(http://stackoverflow.com/questions/7681183/how-can-i-define-a-custom-equality-operation-that-will -be-used-by-immutable-set) – DeadNight

+0

"duplicate"質問への回答は、私の質問で説明したように、私が望んでいなかった「equals」を上書きすることを提案しています。 – TomTom

答えて

-1

あなたは比較のために、複数の異なる実装を持っている場合は、暗黙の型変換とセットの種類を強制、その後、適切なオーバーライドとそれぞれのクラスを作成することができ、このような何か:

class MyCompInt { overrides... } 
val union = Set[MyCompInt](1, 15, 3).union(...) 
関連する問題