In Dart können Sie einen anderen Konstruktor von einem Konstruktor aufrufen

9

Das heißt, ich versuche, einen Konstruktor aus einem anderen aufzurufen und dann weiter zu konstruieren. Ich kann nicht aus der Dokumentation herausfinden, ob es möglich ist.

Hier ist ein künstliches Beispiel, falls es hilft:

%Vor%     
Grumdrig 16.11.2013, 05:50
quelle

2 Antworten

11

Dafür gibt es zwei Möglichkeiten:

%Vor%

Chipmunk.famous1() ist ein Umleitungskonstruktor. In diesem Fall können Sie keine Eigenschaften zuweisen. Daher muss der Konstruktor, den Sie aufrufen, alle Eigenschaften zulassen, die Sie festlegen möchten. Deshalb habe ich fame als optionalen Parameter hinzugefügt. In diesem Fall könnten Sie name und fame final machen.

Chipmunk.famous2() ist ein Factory-Konstruktor und kann nur die gewünschte Instanz erstellen. In diesem Fall könnte fame nicht final sein (offensichtlich könnte es sein, dass Sie den fame -Parameter im named -Konstruktor verwendet haben).

Die erste Variante wäre wahrscheinlich die beste für Ihren Anwendungsfall.

Dies ist die Dokumentation in der Sprachspezifikation:

  

Ein generativer Konstruktor besteht aus einem Konstruktornamen, einer Konstruktorparameterliste und entweder einer Redirect-Klausel oder einer Initialisierungsliste und einem optionalen Body.

Ссылка

    
Dennis Kaselow 16.11.2013, 09:10
quelle
0

Hier könnte das init-Muster verwendet werden: Der Konstruktor ruft nur eine in der Klasse definierte init-Funktion auf.
Es kann in einigen Fällen einen Vorteil gegenüber dem Umleitungskonstruktor haben, ich kann jetzt an zwei denken:
- wenn Sie den Zustand Ihres Objekts speichern / wiederherstellen (in diesem Fall schreiben Sie einfach den Wiederherstellungsteil).
- wenn Sie Ihre Objekte bündeln (recyceln) und sie bei der Wiederbelebung "auffrischen" müssen.

%Vor%     
GameAlchemist 16.11.2013 15:01
quelle

Tags und Links