Wenn ich "scalac -explaintypes" benutze und etwas wie:
sehe %Vor%Was bedeutet die Zeile "& lt; notype & gt; & lt ;: ThingManager?" gemein?
Bedeutet es, dass "Kein Typ dem ThingManager möglicherweise entsprechen kann"?
-explain-types
zeichnet alle Aufrufe von Subtyping-Prüfungen nach. Einrückung wird verwendet, um rekursive Aufrufe anzuzeigen.
Hier ist ein kleines Beispiel:
%Vor% Es gibt drei Rekursionsebenen. Der erste Aufruf überprüft, ob UniqueConstantType(0) <:< UniqueTypeRef(String)
. Die LHS ist ein Singletontyp für die wörtliche Ganzzahl. Der Test wird fortgesetzt durch Berücksichtigung des zugrunde liegenden Typs dieses Singleton-Typs UniqueTypeRef(Int) <:< UniqueTypeRef(String)
.
Die Konformitätsprüfung erfolgt dann Suchen für den Obertyp von Int
der Klasse String
(das Basistyp ) und dann prüfen, ob dies mit String
übereinstimmt. Es gibt keinen solchen Supertyp, daher wird NoType
zurückgegeben. Der rekursive Aufruf von <:<
führt zur Ausgabe <notype> <: java.lang.String
.
NoType
ist ein Null-Objekt. (Der Compiler verwendet dieses Muster auch für NoSymbol
, NoPosition
).
Tags und Links scala