Извлечение типов в Scala

Я новичок в Scala и продвинутых языках программирования. Я пытаюсь решить следующую проблему.

У меня есть:

val s: Seq[SomeMutableType[_]]

Я предполагаю, что все элементы в последовательности имеют один и тот же тип (но не знаю, какой из них на данный момент).

Как я могу позвонить :

def proc[T](v0: SomeMutableType[T], v1: SomeMutableType[T]) { /* ... */ }

на что-то вроде

proc(s(0), s(1))

Компилятор жалуется:

  • несоответствие типов; найдено: SomeMutableType [_ 351 $], где требуется тип _ 351 $:

    Я новичок в Scala и продвинутых языках программирования. Я пытаюсь решить следующую проблему.

    У меня есть:

    val s: Seq[SomeMutableType[_]]
    

    Я предполагаю, что все элементы в последовательности имеют один и тот же тип (но не знаю, какой из них на данный момент).

    Как я могу позвонить :

    def proc[T](v0: SomeMutableType[T], v1: SomeMutableType[T]) { /* ... */ }
    

    на что-то вроде

    proc(s(0), s(1))
    

    Компилятор жалуется:

    • несоответствие типов; найдено: SomeMutableType [_ 351 $], где требуется тип _ 351 $:

      Я новичок в 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 <: Any, но класс SomeMutableType является неизменным для типа T. Вы вместо этого может пожелать определить T как + T. (SLS 4.5)

      Я думал об этой ковариантной вещи, но не верю, что это имеет смысл в моем случае. Я просто хочу, чтобы компилятор мне поверил, когда я скажу, что s (0) и s (1) относятся к одному типу! Обычно я делаю это с помощью некоторого преобразования, но я не могу привести здесь SomeMutableType [T], поскольку T неизвестен из-за стирания. Конечно, я не могу изменить определение процедуры.

5
задан scand1sk 9 May 2011 в 18:48
поделиться