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