Estoy aprendiendo a Scala y tengo una pregunta con respecto al límite inferior.Sobre el límite inferior en Scala
tengo una clase:
class Queue[+T] {
def enqueue[U>:T](x : U) = new Queue[U]()
}
class Fruit
class Apple extends Fruit
class Orange extends Fruit
class Another
Lo que encontré es que, para una cola de cualquier tipo, por ejemplo:
val q1 = new Queue[Fruit]
Todas las tres líneas más adelante pasarán compilar
q1.enqueue(new Apple)
q1.enqueue(new Orange)
q1.enqueue(new Another)
Mi pregunta es: si usamos un límite inferior para definir U debe ser un tipo estupendo de T, en las líneas de arriba, Apple claramente no es tan tipo de Fruta, ¿cómo se puede pasar a la función de enqueue?
La clase "Otra" no está en la jerarquía de la fruta en absoluto, ¿cómo se puede usar en la función en cola?
Por favor, ayúdenme con esto.
Saludos Kevin
Imagínese el colon '>:' 'como un igual> =' –
yo también tenía la misma pregunta. las respuestas dadas a continuación aclararon mi duda. deberías aceptar una respuesta a continuación. – weima