Scala: Verwenden von Typparametern oder abstrakten Typen als Typgrenzen

8

Angenommen, ich habe:

%Vor%

Dies kompiliert:

%Vor%

Dies schlägt fehl:

%Vor%

... mit:

%Vor%

Ich habe versucht, abstrakte Typen anstelle von Typparametern mit dem gleichen Ergebnis zu verwenden. Das einzige Problem, das ich fand, war, den Typ zu instantiieren. Dies kompiliert:

%Vor%

Leider arbeite ich mit Phantom-Typen, die keine Laufzeit-Instanzen haben, oft aus Performance-Gründen.

Warum erzeugt Scala hier einen Kompilierfehler? Gibt es eine bessere Work-around?

Danke für jede Hilfe.

Update: Neben der unten beschriebenen Problemumgehung benötigte ich eine Möglichkeit, um Typen mit abstrakten Typgrenzen zu überschreiben. Ich habe das so gemacht:

%Vor%     
Grant 06.10.2014, 19:15
quelle

1 Antwort

1

Wie wäre es mit:

%Vor%

Scala hat vergessen, generischen (oder einen anderen "abstrakten" Typ) zu suchen, bevor der Parameter alias eingegeben wurde. Vorausgesetzt, dass =: = funktioniert gut - scheint wie ein Fehler für mich. Vielleicht implicits sind auf einer anderen Kompilierungsebene oder kurz vor dieser Überprüfung aufzulösen.

    
dk14 06.10.2014, 23:23
quelle