Tengo problemas para comprender el sistema de límites de tipos de scala. Lo que estoy tratando de hacer es hacer una clase titular que contiene elementos de tipo T que puede iterar sobre los elementos de tipo A. Lo que tengo hasta ahora es:Parámetros de tipo de parámetro de Scala
class HasIterable[T <: Iterable[A], A](item:T){
def printAll = for(i<-item) println(i.toString)
}
val hello = new HasIterable("hello")
La clase en sí se compila correctamente, pero que tratan de crear el valor hello
me da este error:
<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")
^
lo que habría esperado hello
para resolver como HasIterable[String, Char]
en ese caso. ¿Cómo se resuelve este problema?
haría ¿Te importa explicar por qué esto funciona (y el otro no)? – dhg
Esto funcionó para mí, gracias! Y sí, ¿por qué <% funciona en este caso? --aha veo tu edición. Gracias :) – Dylan
@pelotom: gran explicación. ¡Gracias! – dhg