标签: generics scala
通过以下定义,可以确保具体类型参数相等:
trait WithEqual[T1 >: T2 <: T2, T2]
所以行
type A = WithEqual[Int, Int]
将是合法的。现在我的问题是:如何实现恰恰相反?因此,以下行应该不编译:
type B = WithUnequal[Int, Int]
答案 0 :(得分:10)
这在Scala中非常棘手,你必须诉诸于故意模棱两可。这是这项技术的example。
马克·哈拉(Mark Harrah)在他的操场上将这种伎俩归结为类型级别的hackery,Up。
这可能适用于您的问题,但我现在没时间尝试。