NonEmptyList
case クラスと scalazフィールドを比較したい。==
orは機能しません。これは、比較されたオブジェクトが呼び出し元と同じインスタンスであるかどうかをチェックするメソッドeuqls
が原因であることを知っています。NonEmptyList.equals
一方、scalaz===
関数は、スコープ内NonEmptyList
に暗黙的でなければならない場合に問題なく動作します。Equals
問題は、ケース クラスを汎用化し、このインスタンスを簡単に比較できるようにしたいことです。
これを行う方法?
カスタムdef equals(obj: Any): Boolean
メソッドを提供することが唯一の解決策である場合は、以下に投稿してください。
私のコード:
object Problem {
case class CC[M, N](s: M, nel: NonEmptyList[N])
CC(1, 2.wrapNel) == CC(1, 2.wrapNel) //false
CC(1, 2.wrapNel) equals CC(1, 2.wrapNel) //false
implicit def cCEquals[M, N] = equalA[CC[M, N]]
CC(1, 2.wrapNel) === CC(1, 2.wrapNel) //false
//override def equals(obj: Any): Boolean = ???
}