2010-09-30 2 views
4

следующее определение, что можно обеспечить параметры конкретного типа, равны:Как обеспечить, чтобы параметры типа были разными в Scala?

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

Так линия

type A = WithEqual[Int, Int] 

будет законным. Теперь мой вопрос: как добиться совершенно противоположного? Таким образом, следующая строка должна не компиляции:

type B = WithUnequal[Int, Int] 

ответ

10

Это довольно сложно в Scala, вы должны прибегнуть к преднамеренной двусмысленности. Вот example этой техники.

Марк Харра обобщил трюк на своей игровой площадке для хакерства уровня, Up.

Скорее всего, это может быть применено к вашему вопросу, но у меня нет времени попробовать прямо сейчас.

Смежные вопросы