Uczę się Scala i mam pytanie dotyczące dolnej granicy.O dolnej granicy Scala
Mam klasy:
class Queue[+T] {
def enqueue[U>:T](x : U) = new Queue[U]()
}
class Fruit
class Apple extends Fruit
class Orange extends Fruit
class Another
Co znalazłem jest, że do kolejki dowolnego typu, np:
val q1 = new Queue[Fruit]
Wszystkie trzy linie poniżej minie skompilować
q1.enqueue(new Apple)
q1.enqueue(new Orange)
q1.enqueue(new Another)
Moje pytanie brzmi: jeśli użyjemy dolnej granicy do zdefiniowania U musi być super typem T, w liniach powyżej, Apple wyraźnie nie jest takie wyższy typ Fruit, jak można go przekazać do funkcji kolejkowania?
Klasa "Inna" w ogóle nie jest w hierarchii owoców, jak może być użyta w funkcji kolizji?
Proszę, pomóżcie mi z tym.
Pozdrowienia Kevin
Wyobraź dwukropka '>:' 'jako równe> =' –
miałem również samo pytanie. poniższe odpowiedzi wyjaśniły moje wątpliwości. powinieneś zaakceptować odpowiedź poniżej. – weima