Generics 如何确保Scala中的类型参数不同?

Generics 如何确保Scala中的类型参数不同?,generics,scala,Generics,Scala,根据以下定义,可以确保混凝土类型参数相等: trait WithEqual[T1 >: T2 <: T2, T2] 将是合法的。现在我的问题是:如何实现完全相反的目标?因此,不应编译以下行: 这在Scala中是相当棘手的,您必须求助于故意的歧义。下面是这项技术的一个例子 马克·哈拉(Mark Harrah)在他的操场上推广了这种类型级别黑客的技巧 这很可能适用于你的问题,但我现在没有时间尝试 type A = WithEqual[Int, Int] type B = WithUn

根据以下定义,可以确保混凝土类型参数相等:

trait WithEqual[T1 >: T2 <: T2, T2]
将是合法的。现在我的问题是:如何实现完全相反的目标?因此,不应编译以下行:


这在Scala中是相当棘手的,您必须求助于故意的歧义。下面是这项技术的一个例子

马克·哈拉(Mark Harrah)在他的操场上推广了这种类型级别黑客的技巧

这很可能适用于你的问题,但我现在没有时间尝试

type A = WithEqual[Int, Int]
type B = WithUnequal[Int, Int]