Gibt es eine Möglichkeit, eine Teilmenge von Typparametern in Scala anzugeben, um den Rest abzuleiten?

8

Ich habe eine Klasse, die so aussieht:

%Vor%

A, B und C können abgeleitet werden, also kann ich es einfach mit:

instanziieren %Vor%

was mir ein X gibt [Nothing, Int, Int] - oft was ich will.

Ich möchte aber manchmal angeben, dass A etwas anderes als Nothing ist (z. B. AssertionError). Ist dies möglich, ohne auch B und C zu spezifizieren? Ich stellte mir eine Syntax vor:

%Vor%

aber offensichtlich funktioniert das nicht.

Gibt es dafür eine Syntax, oder kann ich das gleiche Ergebnis erzielen?

    
Draemon 01.03.2013, 11:56
quelle

5 Antworten

4

Mein Hauptanliegen war es, dies an der Verwendungsstelle zu vereinfachen (ich würde es vorziehen, für jede Verwendung keine neuen Typen definieren zu müssen, da die Ausnahmen oft unterschiedlich sind). Ich habe festgestellt, dass ich das Companion-Objekt verwenden kann, um eine Zwischenfabrik herzustellen:

%Vor%

Der einzige Nachteil, den ich sehen kann, ist, dass Sie das "apply" formulieren müssen.

    
Draemon 01.03.2013 12:29
quelle
3

Sie könnten einen Typalias definieren, bei dem Ihr erster Typparameter auf AssertionError :

festgelegt ist %Vor%     
Frank S. Thomas 01.03.2013 12:20
quelle
3

Wenn Sie keine Angst vor knappen Hardcore-Syntax haben, können Sie geben Lamdas dafür:

%Vor%

Trotzdem ist es ein Weg, hier einen Typalias zu definieren, wie Frank S. Thomas vorgeschlagen hat.

    
folone 01.03.2013 12:18
quelle
3

Hier ist meine Lösung:

%Vor%     
Eastsun 01.03.2013 14:20
quelle
1

Sie könnten einfach einen Konstruktor mit einem Standardargument definieren.

%Vor%     
Emil H 01.03.2013 15:53
quelle

Tags und Links