Dart Academy · Lezione

Liste di inizializzazione e reindirizzamento

Impostare i final e riutilizzare i costruttori.

Lezione 3 di 413 passaggi

Liste di inizializzazione e reindirizzamento è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.

Impostare i campi final

Un campo final deve essere impostato prima dell'esecuzione del corpo del costruttore. La lista degli inizializzatori è il posto perfetto per assegnargli il suo unico valore.

class Circle {
  final double area;
  Circle(double r) : area = 3.14 * r * r;
}

Sintassi della lista degli inizializzatori

Dopo l'elenco dei parametri, aggiungi due punti e assegnazioni separate da virgole. Questa initializer list viene eseguita prima del corpo del costruttore.

Point(int x, int y) : x = x, y = y;

Viene eseguita prima del corpo

Le assegnazioni degli inizializzatori avvengono per prime, poi viene eseguito il corpo. Pertanto, i campi impostati nella list sono già pronti all'interno del corpo.

class Box {
  final int n;
  Box(int v) : n = v {
    print(n); // available
  }
}

Calcolare valori derivati

Usa la lista per calcolare un campo a partire dai parametri, ad esempio un totale o un'etichetta, prima che chiunque possa usare l'object.

class Rect {
  final int area;
  Rect(int w, int h) : area = w * h;
}

Più inizializzatori

Separa più assegnazioni con virgole. Ognuna imposta un campo diverso nella stessa singola initializer list.

Point(int a, int b) : x = a, y = b;

assert nella lista degli inizializzatori

Puoi inserire un assert nella lista per controllare gli input durante lo sviluppo e intercettare i valori errati prima che l'oggetto venga creato.

Circle(double r) : assert(r > 0), area = 3.14 * r * r;

Costruttori deleganti

Un costruttore può delegare a un altro usando this dopo i due punti, così la configurazione condivisa resta in un unico punto.

class Point {
  int x, y;
  Point(this.x, this.y);
  Point.zero() : this(0, 0);
}

Perché delegare

La delega evita di ripetere le assegnazioni dei campi. Quello con nome si limita a chiamare quello principale, mantenendo la logica DRY.

Point.origin() : this(0, 0);

I corpi dei costruttori deleganti restano vuoti

Un costruttore delegante non ha corpo. Inoltra soltanto la chiamata al costruttore di destinazione con this(...), che esegue tutto il lavoro.

class User {
  String name;
  User(this.name);
  User.anon() : this("anon");
}

Ordine delle operazioni

Ricorda il flusso: prima vengono eseguiti la lista degli inizializzatori e l'eventuale delega, poi il corpo. Imposta i campi finals nella lista ed esegui le operazioni aggiuntive nel corpo.

Lista degli inizializzatori o corpo

Usa la lista per assegnare i campi, soprattutto quelli final; usa il body per la logica, come stampare, eseguire convalide oltre ad assert o chiamare metodi.

Controllo rapido

Controllo rapido sulle liste degli inizializzatori.

Riepilogo: inizializzazione e delega

Ora sai usare una initializer list per impostare i campi final e calcolare valori, controllare gli input con assert e delegare un costruttore a un altro con this. 🔀

Gratis per iniziare

Impara Dart con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Liste di inizializzazione e reindirizzamento» è gratuita?

Sì — il testo completo di «Liste di inizializzazione e reindirizzamento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.

Cosa imparerò in «Liste di inizializzazione e reindirizzamento»?

Impostare i final e riutilizzare i costruttori. Eserciti Dart Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Dart Academy?

Non è richiesta alcuna esperienza precedente. Dart Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Liste di inizializzazione e reindirizzamento»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Dart Academy?

Sì. Ogni lezione Dart Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Costruttori predefiniti e parametrizzati
  2. Costruttori denominati per un intento chiaro
  3. Liste di inizializzazione e reindirizzamento
  4. Costruttori factory e const
← Torna a Dart Academy