У меня возникли проблемы с пониманием системы границ типов в 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]
.Как решается эта проблема?