Es fällt mir schwer, den Unterschied im Verhalten zwischen zu erklären zusätzliche implizite Werte, die entweder von einem primären impliziten Wert oder von einem implizite Konvertierung Konkret funktioniert das:
%Vor%Aber das ist nicht:
%Vor%Variieren:
implicitly
oder einer impliziten Konvertierung gestartet wird Ich bekomme folgende Ergebnisse:
%Vor%Wie Sie sehen, ist der einzige Fall, der nicht funktioniert, der Start der Suche durch eine implizite Konvertierung ist der gesuchte Wert polymorph, aber der Wert geliefert ist monomorph.
Gibt es einen theoretischen Grund, warum dies der Fall sein sollte, oder ist dies a Fehler / Einschränkung von Scala?
Sie werden von scalac bug SI-3346 gebissen. Allgemeiner siehe die Beschreibung von SI-4699 , insb. Punkt (1),
1) Implizite Suche und implizite Konvertierungssuche behandeln unbestimmte Typparameter unterschiedlich
Sie beobachten direkt, wo Ihre Fälle zwischen impliziten Werten und impliziten Konvertierungen unterscheiden.
Ich habe SI-3346 aktualisiert, um dies als zusätzliches Beispiel einzubeziehen.
Ändern Sie die Signatur der impliziten Konvertierung folgendermaßen:
%Vor%Rufen Sie dann aMethod mit einem Wert vom Typ auf, für den ein impliziter Wert definiert ist, d. h. mit einem String :
%Vor%Tags und Links scala polymorphism implicit