В Scala можно ли произвольно установить ограничения на типы шаблонов? В частном случае, я работаю, у меня есть класс с двумя параметрами шаблона следующим образом:Scala Template Restrictions
class TwoWayMap[S,T]()
{
...
}
Я пытаюсь работать над тонкой оберткой вокруг пары карт, что позволяет пользователю смотреть ключи в обоих направлениях. Ограничение этих двух типов, чтобы не быть такой же позволит отрываясь значений в зависимости от типа, что позволяет мне писать оба следующих:
def apply(t : T)
def apply(s : S)
, но очевидно, что это не работает, если типы совпадают, поэтому Я хотел бы ограничить S! = T
Я думаю, было бы лучше, если бы вы могли обеспечить мотивацию для этого. Я не думаю, что вы можете это сделать (совсем не уверен). В основном мы говорим только о нижних и верхних границах общих типов. Мне кажется, что вы хотите, вероятно, что-то, что можно получить благодаря лучшему дизайну программы. – Felix
Я улучшил свой пример, чтобы показать мотивацию! – paulmdavies
Вы можете, конечно, сделать это во время выполнения с помощью отражения, но, похоже, вам нужна исправлена ошибка, верно? Я бы, конечно, сказал, что если люди используют один и тот же тип, они не имеют понятия, что они делают в любом случае, и вам может быть достаточно исключений во время выполнения. – Felix