Vários limites de tipo inferior no Scala
Eu percebi issotuple.productIterator
sempre retorna umIterator[Any]
perguntou-se se não é possível definir vários limites inferiores (portanto, pode ser um iterador do super tipo comum mais baixo
Eu tentei e procurei um pouco, mas só encontreiist pergunta para vários limites superiores.
Este é o meu teste sobre como definir o tipo do iterador:
def f[A,B](a:A, b:B) = List(a,b)
// return type is List[Any]
def f[A,B, T >: A "and" T >: B](a:A, b:B) = List[T](a,b)
// doesn't compile, but
// f(1, true) should give a List[AnyVal] and
// f("x", "y") a List[String]
Isso é uma limitação da JVM?
Editar Aqui está um exemplo um pouco maior que não parece ser solucionável usando a abordagem IttayD quando T deve ser definido no método:class Foo[A, B](a: A, b: B) {
def f[T >: A] = List[T](a) // works
def g[T >: A "and" T >: B] = List[T](a) // doesn't work
}