Extension sui generics
Estendere List, Iterable e i parametri di tipo.
Extension sui generics è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Estenda le collezioni
La vera magia appare quando estende tipi generici come List o Iterable. Una sola extension può essere utile per ogni tipo di elemento.
Dichiari un parametro di tipo
Inserisca un parametro di tipo dopo il nome dell'extension, quindi lo utilizzi nella clausola on. In questo modo l'helper rimane completamente sicuro dal punto di vista dei tipi.
extension Firsts<T> on List<T> {
T? get firstOrNull => isEmpty ? null : this[0];
}Il tipo dell'elemento viene mantenuto
Poiché ha scritto List di T, il metodo restituisce automaticamente il tipo corretto dell'elemento. Nessun cast e nessuna sorpresa dovuta a dynamic.
List<int> nums = [1, 2, 3];
int? n = nums.firstOrNull; // typed as int?Estenda Iterable per una portata maggiore
Estendere Iterable invece di List fa funzionare l'helper su liste, set e iterable lazy allo stesso modo. Maggiore portata, stesso codice.
extension Counts<T> on Iterable<T> {
int countWhere(bool Function(T) f) => where(f).length;
}Metodi generici all'interno
Anche un metodo di un'extension può accettare i propri parametri generici, indipendentemente dal tipo che sta estendendo.
extension Mapping<T> on List<T> {
List<R> mapTo<R>(R Function(T) f) => map(f).toList();
}L'inferenza dei tipi La aiuta
Dart di solito inferisce gli argomenti di tipo dal valore su cui effettua la chiamata, così i punti di chiamata rimangono brevi e puliti.
var first = ["a", "b"].firstOrNull; // String?Estenda Map con due tipi
Le mappe richiedono due parametri. Scriva Map di K, V e potrà creare helper che rispettano sia le chiavi sia i valori.
extension MapPick<K, V> on Map<K, V> {
V? pick(K key) => this[key];
}Mantenga la null safety
Restituire T? invece di T segnala che potrebbe mancare un valore, mantenendo corretto il codice chiamante con la null safety.
extension SafeLast<T> on List<T> {
T? get lastOrNull => isEmpty ? null : last;
}Riutilizzi l'extension con ogni tipo di elemento
Una sola extension generica funziona con ogni tipo di elemento. Lo stesso firstOrNull funziona con numeri, stringhe e classi definite da Lei.
var who = <User>[].firstOrNull; // User?Aggiunga vincoli quando necessario
Se l'helper richiede capacità specifiche, aggiunga un vincolo con extends, così saranno consentiti solo i tipi di elemento adatti.
extension Sums<T extends num> on List<T> {
num total() => fold(0, (a, b) => a + b);
}Perché scegliere le extension generiche
Combinano riutilizzabilità e sicurezza: scriva un helper una sola volta e questo si adatterà a qualsiasi tipo di elemento, preservando il tipo di ritorno corretto.
Verifica rapida
Una verifica rapida per mantenere le extension sicure dal punto di vista dei tipi.
Riepilogo: le extension generiche
Può aggiungere un parametro di tipo a un'extension, applicarla a List, Iterable o Map e persino vincolarla con extends per mantenerla riutilizzabile e sicura. ✅
Domande Frequenti
La lezione «Extension sui generics» è gratuita?
Sì — il testo completo di «Extension sui generics» è 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 sui generics»?
Estendere List, Iterable e i parametri di tipo. 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 2 di 4.
Quanto tempo richiede la lezione «Extension sui generics»?
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
- Scrivere la prima extension
- Extension sui generics
- Membri statici delle extension e conflitti
- Extension type per wrapper senza costi