Unterstrich für existenziellen Typ in Scala

Ich habe in Scala einen Blog über existenzielle Typen gelesen: Existenzielle Typen in Scala

In diesem Blog wird ein Beispiel erwähnt:

Map[Class[T forSome { type T}], String]
Map[Class[T] forSome { type T}, String]
Map[Class[T], String] forSome { type T}

Seine Erklärung. "Der dritte ist der Supertyp aller Kartentypen, so dass es ein T gibt, so dass es eine Map [Klasse [T], Zeichenfolge] ist. Also haben wir wieder einen festen Klassentyp für Schlüssel in der Map - es ist Nur, dass wir diesmal nicht wissen, um welchen Typ es sich handelt. Der mittlere Typ hat jedoch Schlüssel vom Typ Klasse [T] für einige {Typ T}. Das heißt, seine Schlüssel sind Klassen, denen es erlaubt ist, einen beliebigen Wert für ihre zu haben Typ Parameter. Also das ist, was wir eigentlich wollten. "

Die Erklärung ist nicht leicht zu folgen. Was sind die Unterschiede zwischen dem zweiten und dritten im Codebeispiel? Kann uns jemand einige Beispiele nennen?

Der Blog erwähne auch, dassMap[Class[_], String] entspricht dem dritten im Beispiel, wenn wir den zweiten tatsächlich wollen. Wird dies die Semantik beeinflussen, wenn wir @ verwende_ für existenziellen Typ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage