Dopo aver esaminato alcuni esempi, devo dire, non riesco a capire cosa porti il polimorfico F-Bounded.spiegazione dei tipi scala f
Per utilizzare l'esempio dalla scuola scala (https://twitter.github.io/scala_school/advanced-types.html#fbounded)
Spiegano che hanno bisogno di un certo tipo F-Delimitata in modo che la sottoclasse può restituire il sottotipo. in modo da fare qualcosa di simile:
trait Container[A <: Container[A]] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(that: MyContainer) = 0
}
Ma non vedo qual è il guadagno di utilizzare questo tipo di tipo quando si potrebbe usare qualcosa di simile:
trait Container[A] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(other: MyContainer) = 0
}
Ogni spiegazione è molto accolto
Grazie
Penso di aver ottenuto il punto di Nishan e per me ha senso, ma la parte di cui stai parlando è la parte che mi confonde. Dal tuo esempio, potresti definire A come: tratto Container [A] e ottenere lo stesso risultato. Non dovrai sovrascrivere la funzione di accoppiamento nel subcassa –
Oh, non importa, l'ho appena ricevuto. Se si seleziona Container [A], non è possibile garantire che dalla sottoclasse il tipo A restituito sia di tipo Container. molte grazie –