我想將案例類與scalaz NonEmptyList
字段進行比較。 ==
或euqls
不起作用,我知道這是由於NonEmptyList.equals
方法,它檢查比較對象是否與調用方相同。另一方面,對於NonEmptyList
,scalaz ===
函數可以正常工作,前提是必須在範圍內隱含Equals
。case class with scalaz.NonEmptyList [A] as the member and the ===,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 = ???
}
很好的解釋。謝謝! –