Mam problem ze zrozumieniem systemu granic typu scala. Co próbuję zrobić, to klasa, która posiada uchwyt elementy typu T, które można iteracyjne nad elementów typu A. To, co mam tak daleko jest:Ograniczenia parametrów typu Scala
class HasIterable[T <: Iterable[A], A](item:T){
def printAll = for(i<-item) println(i.toString)
}
val hello = new HasIterable("hello")
Klasa sama powodzeniem kompiluje ale próby utworzenia wartość hello
daje mi ten błąd:
<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")
^
Liczyłam hello
rozwiązać jako HasIterable[String, Char]
w tej sprawie. W jaki sposób rozwiązano ten problem?
będzie Czy możesz wyjaśnić, dlaczego to działa (a inne nie)? – dhg
To zadziałało dla mnie, dzięki! I tak, dlaczego <% działa w tym przypadku? --aha Widzę twoją edycję. Dzięki :) – Dylan
@pelotom: wielkie wyjaśnienie. dzięki! – dhg