Scala-Vererbungsstandardparameter in der Elternklasse

8

Ich habe eine abstrakte Klasse mit einem Standardwert für ihren Parameter. Ich möchte nicht den Standardwert im Konstruktor aller möglichen Implementierungen wiederverwenden müssen.

%Vor%

Was ich bekommen möchte

%Vor%

Ich habe überlegt, einen Hilfskonstruktor zu verwenden, der den zweiten Parameter weglässt, aber das hilft nicht, da man Superkonstruktoren nicht außerhalb des Hauptkonstruktors aufrufen kann.

Ich möchte wissen, wie es geht, oder warum es nicht möglich ist. Ich bin nicht auf der Suche nach einem Workaround, wie keine Vererbung verwenden.

    
user3588254 19.05.2015, 12:50
quelle

2 Antworten

1

Sie können den Standardwert eleganter wiederverwenden:

%Vor%     
Meir Maor 19.05.2015, 15:58
quelle
3

Ich fürchte, das ist nicht möglich. Ganz einfach, Sie übergeben einen Wert an den Place-Konstruktor, damit er nicht den Standardwert verwendet, wie auch immer sein Wert sein mag. Wenn es Ihnen nichts ausmacht, eine Var anstelle von einem Wert zu haben, ist hier eine Variante, die für Ihre 3 Fälle funktioniert:

%Vor%

Konstrukteure in Scala sind ein bisschen eine Sauerei IMHO. Manchmal ist eine bessere Antwort, wenn Sie die Methode factory apply() auf einem Companion-Objekt verwenden, die flexibler ist.

    
Daniel Langdon 19.05.2015 13:07
quelle