Nach ein paar Beispielen zu gehen, muss ich sagen, ich verstehe nicht, was die F-Bounded Polymorphic bringt.scala f-beschränkte Typen Erklärung
Um das Beispiel von scala Schule (https://twitter.github.io/scala_school/advanced-types.html#fbounded)
Sie verwenden erklären, dass sie einen F-Bounded Typen benötigen, so dass die Unterklasse das Subtyp zurückkehren kann. So sie etwas tun, wie folgt aus:
trait Container[A <: Container[A]] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(that: MyContainer) = 0
}
Aber ich sehe nicht, was ist der Gewinn dieser Art von Art der Verwendung, wenn Sie so etwas wie diese verwenden:
trait Container[A] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(other: MyContainer) = 0
}
Jede Erklärung ist sehr
begrüßtDank
Ich denke, ich habe Nishans Argument und für mich ergibt es Sinn, aber der Teil, über den du redest, ist der Teil, der mich verwirrt. In Ihrem Beispiel könnten Sie A wie folgt definieren: Merkmal Container [A] und dasselbe Ergebnis erhalten. Sie müssen die Paarfunktion in der Unterklasse nicht überschreiben –
Oh, egal, ich habe es gerade. Wenn Sie Container [A] kennzeichnen, können Sie nicht garantieren, dass der zurückgegebene Typ A in der Unterklasse vom Typ Container ist. Danke vielmals –