Я новичок в Scala и продвинутых языках программирования. Пытаюсь решить следующую задачу.
У меня есть:
val s: Seq[SomeMutableType[_]]
Я предполагаю, что все элементы в последовательности имеют один и тот же тип (но пока не знаю, какой именно).
Как я могу позвонить:
def proc[T](v0: SomeMutableType[T], v1: SomeMutableType[T]) { /* ... */ }
с чем-то вроде
proc(s(0), s(1))
Компилятор жалуется:
- несоответствие типов; найдено : SomeMutableType[_$351], где требуется тип _$351: SomeMutableType[Any] Примечание: _$351 ‹: Любой, но класс SomeMutableType является инвариантным в типе T. Вместо этого вы можете определить T как +T. (SLS 4.5)
Я думал об этой ковариантной штуке, но не думаю, что в моем случае это имеет смысл. Я просто хочу, чтобы компилятор поверил мне, когда я говорю, что s(0) и s(1) одного типа! Обычно я делаю это с помощью некоторого приведения, но здесь я не могу привести к SomeMutableType[T], так как T неизвестен из-за стирания. Конечно, я не могу изменить определение proc.
s
? В идеале вы должны привязать свой_
к некоторому параметру типа, объявленному в методе или классе… - person Jean-Philippe Pellet   schedule 09.05.2011