Warum findet Scala in diesem einen Fall keinen sekundären impliziten Wert?

8

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:

  • Ob die Suche von implicitly oder einer impliziten Konvertierung gestartet wird
  • Gibt an, ob der gesuchte sekundäre implizite Wert polymorph ist
  • Gibt an, ob der angegebene sekundäre implizite Wert polymorph ist

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?

    
Owen 04.02.2012, 04:07
quelle

2 Antworten

7

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.

    
Miles Sabin 04.02.2012, 14:11
quelle
3

Ä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%     
Heiko Seeberger 04.02.2012 11:10
quelle

Tags und Links