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?
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.
Sie könnten einen Typalias definieren, bei dem Ihr erster Typparameter auf AssertionError
:
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.
Tags und Links scala type-inference