0Pricing
Dart Academy · Lezione

Campi final e immutabilità profonda

Creare oggetti che non cambiano mai

Campi final e immutabilità profonda è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 1 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.

Immutabile per progettazione

Un oggetto immutabile non cambia mai dopo essere stato creato. In questo modo i dati restano prevedibili e sicuri da condividere in tutta l'app. 🔒

Conosciamo final

Un campo final viene assegnato una sola volta durante la costruzione e non può mai essere riassegnato. Il valore resta così fissato per tutta la vita dell'oggetto.

class Point {
  final int x;
  Point(this.x);
}

La riassegnazione è un errore

Se prova ad assegnare un nuovo valore a un campo final, il compilatore glielo impedisce. L'errore viene rilevato prima ancora che il programma venga eseguito.

final p = Point(3);
p.x = 9; // compile error

final e const

Usi const quando il valore è noto a tempo di compilazione e final quando viene calcolato a tempo di esecuzione. Entrambi impediscono riassegnazioni successive.

const pi = 3.14;
final now = DateTime.now();

Costruttori const

Assegni a una classe un costruttore const e Dart potrà creare istanze realmente immutabili. Tutti i suoi campi devono essere a loro volta final.

class Color {
  final int rgb;
  const Color(this.rgb);
}

Istanze const condivise

Due oggetti const identici sono la stessa identica istanza in memoria. Dart li riutilizza, risparmiando spazio e tempo.

const a = Color(0);
const b = Color(0);
print(identical(a, b)); // true

Superficiale e profonda

Un campo final impedisce la riassegnazione, ma non congela l'oggetto a cui fa riferimento. Una List final può ancora contenere nuovi elementi.

final nums = [1, 2];
nums.add(3); // allowed!

L'obiettivo dell'immutabilità profonda

L'immutabilità profonda significa che nulla di ciò che è raggiungibile dall'oggetto può cambiare. Per ottenerla completamente serve qualcosa in più di final.

Rendere immutabili le raccolte

Avvolga una lista con List.unmodifiable affinché ogni tentativo di aggiungere o rimuovere elementi generi un'eccezione. Ora l'intera struttura resta immutabile.

final tags = List.unmodifiable([1, 2]);
tags.add(3); // throws at runtime

Literal di raccolte const

Anteponendo const a un literal si ottiene una raccolta profondamente immutabile, creata a tempo di compilazione. Non può essere modificata in alcun modo.

const days = ['Mon', 'Tue'];
// days.add(...) is forbidden

Perché è importante

I dati immutabili sono thread-safe, facili da memorizzare nella cache e adatti alla gestione dello stato in Flutter. I bug causati da mutazioni nascoste semplicemente scompaiono.

Verifica rapida

Un'ultima verifica su final e sull'immutabilità.

Riepilogo

Ha imparato che final blocca un campo, const blocca i valori a tempo di compilazione e che l'immutabilità profonda richiede raccolte non modificabili o const. 🎉

Domande Frequenti

La lezione «Campi final e immutabilità profonda» è gratuita?

Sì — il testo completo di «Campi final e immutabilità profonda» è 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 «Campi final e immutabilità profonda»?

Creare oggetti che non cambiano mai 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 1 di 4.

Quanto tempo richiede la lezione «Campi final e immutabilità profonda»?

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. Campi final e immutabilità profonda
  2. Classi sealed e switch esaustivi
  3. Modificatori base, interface e final
  4. copyWith ed equality basata sul valore
← Torna a Dart Academy