由于是一个广义类型约束强制执行阶=:=
平等,是有一个强制执行“不等于”对于类型?基本上!=
但类型?
编辑
评论下方指向现有Q&A,答案似乎是:(1)不,它不是在标准库(2)是的,这是可能的定义之一。
所以我会修改我的问题,因为我看到答案后发生在我身上的一个想法。
鉴于现有的解决方案:
sealed class =!=[A,B]
trait LowerPriorityImplicits {
implicit def equal[A]: =!=[A, A] = sys.error("should not be called")
}
object =!= extends LowerPriorityImplicits {
implicit def nequal[A,B](implicit same: A =:= B = null): =!=[A,B] =
if (same != null) sys.error("should not be called explicitly with same type")
else new =!=[A,B]
}
case class Foo[A,B](a: A, b: B)(implicit e: A =!= B)
如果A <: B
或A >: B
,将它仍然是这样的情况A =!= B
?如果没有,是否有可能修改解决方案,如果A =!= B
那么它不是A <: B
或A >: B
?
SO开发者应该*确实*修正他们的搜索错误,以便寻找'=!='实际上列出了这个问题。这个bug现在已经有4年了。 –