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

时间:2010-09-30 07:10:01

标签: generics scala

通过以下定义,可以确保具体类型参数相等:

trait WithEqual[T1 >: T2 <: T2, T2]

所以行

type A = WithEqual[Int, Int]

将是合法的。现在我的问题是:如何实现恰恰相反?因此,以下行应该编译:

type B = WithUnequal[Int, Int]

1 个答案:

答案 0 :(得分:10)

这在Scala中非常棘手,你必须诉诸于故意模棱两可。这是这项技术的example

马克·哈拉(Mark Harrah)在他的操场上将这种伎俩归结为类型级别的hackery,Up

这可能适用于您的问题,但我现在没时间尝试。