Von dem, was ich sagen kann, sind diese zwei Funktionen äquivalent:Typen und Generika: Unterschied zwischen `[X <: Int]` und `{type X <: Int}`
def x(xx: X forSome { type X <: Int }): Unit =()
def y[Y <: Int](yy: Y): Unit =()
Nach meinen Beobachtungen heutzutage benutzen Leute meistens die zweite Form (die []
benutzt), gleichzeitig sehe ich manchmal Artikel (meistens alte, die existentielle Typen diskutieren), die die erste verwenden (forSome
).
Was ist der Grund hinter 2 Notationen? Gibt es Pros/Contras oder Dinge, die man mit dem einen oder anderen nicht machen kann?
So wie Sie bemerkt haben, ist es existentieller Typ, der Alias ist ein Platzhalter in eckigen Klammern; Vor-und Nachteile können nicht beschrieben werden, weil es verschiedene Arten ist; hier können Sie mehr lesen: http://www.drmaciver.com/2008/03/existential-types-in-scala/ (mit Proben), sry für eine nicht konkurrierende Antwort, haben keine Zeit, mein eigenes zu schreiben. – DaunnC