Как обеспечить, чтобы параметры типа отличались в Scala? - PullRequest
4 голосов
/ 30 сентября 2010

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

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

Итак, линия

type A = WithEqual[Int, Int]

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

type B = WithUnequal[Int, Int]

1 Ответ

10 голосов
/ 30 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...