Ist es möglich, implizite Beweise zu verwenden, um die statische Typkompatibilität zwischen abstrakten Typen zu erzwingen?

8

Nehmen Sie das folgende Merkmal an:

%Vor%

Ich verwende einen abstrakten Typ, weil ich nicht jedes Mal, wenn ich ein A brauche, in der Typ-Signatur um das B ziehen möchte. Ist es noch möglich, einen impliziten Beweis (using =: =, & lt;: & lt; usw.) zu der + -Methode hinzuzufügen, so dass der Compiler immer noch die Akzeptanz eines: A's mit identischen B's erzwingen kann?

Mein erster Instinkt ist, nein zu sagen, aber Scala hat mich zuvor angenehm überrascht. Jede Hilfe wäre willkommen.

    
user44242 06.05.2011, 10:10
quelle

1 Antwort

10

Sie brauchen keine impliziten Beweise ... Sie können eine explizite Verfeinerung verwenden,

%Vor%

(Beachten Sie die Verwendung einer Annotation vom Typ "Selbst", um einen Alias ​​für das äußere "Dies" anzugeben, damit die definierten und definierenden B in der Definition des Typs Self unterschieden werden können.)

REPL-Transkript,

%Vor%     
Miles Sabin 06.05.2011, 10:50
quelle

Tags und Links