Границы параметров типа Scala

У меня проблемы с пониманием границ типа scala система. Что я пытаюсь сделать, так это создать класс-держатель, содержащий элементы типа T, который может перебирать элементы типа A. На данный момент у меня есть следующее:

class HasIterable[T <: Iterable[A], A](item:T){
  def printAll = for(i<-item) println(i.toString)
}

val hello = new HasIterable("hello")

Сам класс успешно компилируется, но пытается создать Значение hello дает мне эту ошибку:

<console>:11: error: inferred type arguments [java.lang.String,Nothing] do 
not conform to class HasIterable's type parameter bounds [T <: Iterable[A],A]
   val hello = new HasIterable("hello")
               ^

Я ожидал, что hello в этом случае будет разрешено как HasIterable [String, Char] . Как решена эта проблема?

8
задан om-nom-nom 6 February 2012 в 04:38
поделиться