Dart Academy · Lezione

Extension type per wrapper senza costi

Avvolgere un tipo senza overhead a runtime.

Lezione 4 di 413 passaggi

Extension type per wrapper senza costi è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Uno strumento diverso

Un'extension type è una funzionalità più recente: avvolge un tipo esistente per fornirgli una nuova interfaccia, senza alcun costo a runtime.

Avvolga senza boxing

A differenza di una vera classe wrapper, un'extension type non aggiunge alcun oggetto a runtime. A runtime è semplicemente il valore sottostante.

extension type UserId(int id) {}

Il tipo di rappresentazione

Il valore tra parentesi è il tipo di rappresentazione. In questo caso, UserId è in realtà solo un int con un nome più sicuro.

extension type Meters(double value) {}

Ne crei una facilmente

Costruisce un'extension type come se chiamasse un costruttore, passando direttamente il valore sottostante.

var id = UserId(42);
var d = Meters(3.5);

Aggiunga metodi sicuri

Nel corpo può aggiungere metodi e getter che operano sul valore incapsulato, conferendogli un significato concreto.

extension type Meters(double value) {
  Meters plus(Meters o) => Meters(value + o.value);
}

Più forte di typedef

Un typedef è solo un alias, mentre un'extension type è un tipo distinto. Non può confondere per errore un UserId con un int normale.

int raw = 42;
// UserId u = raw; // error: not interchangeable

Nasconda l'API sottostante

Per impostazione predefinita, un'extension type nasconde i membri del tipo incapsulato, quindi è possibile chiamare solo i metodi esposti.

var m = Meters(2.0);
// m.toStringAsFixed(2); // not available unless exposed

Oppure usi implements per esporla

Aggiunga implements per inoltrare i membri sottostanti, consentendo ai chiamanti di utilizzare sia la Sua API sia il tipo di base.

extension type Score(int value) implements int {}
print(Score(9) + 1); // 10

Nessun overhead a runtime

Poiché non viene creato alcun oggetto reale, le extension type non costano nulla a runtime. Ottiene la sicurezza dei tipi gratuitamente.

Ideali per gli identificatori di dominio

Sono particolarmente utili per gli identificatori tipizzati come UserId o Email, perché impediscono di passare l'int sbagliato al parametro sbagliato.

void load(UserId id) {}
load(UserId(7)); // load(7) would not compile

Extension ed extension type

Un'extension aggiunge metodi a un tipo condiviso da tutti; un'extension type crea attorno a un valore un nuovo tipo distinto.

Verifica rapida

Ultima verifica: che cosa rende speciali le extension type?

Riepilogo: le extension type

Ha conosciuto le extension type: wrapper distinti e senza costi a runtime sopra un tipo di rappresentazione, ideali per ID e unità sicuri senza overhead a runtime. 🏁

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 «Extension type per wrapper senza costi» è gratuita?

Sì — il testo completo di «Extension type per wrapper senza costi» è 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 «Extension type per wrapper senza costi»?

Avvolgere un tipo senza overhead a runtime. 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 4 di 4.

Quanto tempo richiede la lezione «Extension type per wrapper senza costi»?

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. Scrivere la prima extension
  2. Extension sui generics
  3. Membri statici delle extension e conflitti
  4. Extension type per wrapper senza costi
← Torna a Dart Academy