@TypeOf e riflessione sui tipi
Ispezionare i tipi per mantenere il codice generico
@TypeOf e riflessione sui tipi è una lezione Zig 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 Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.
Chiedere informazioni sui tipi
Il codice generico spesso deve conoscere il tipo di un valore senza che lo si scriva esplicitamente. In Zig questo si fa con il costrutto integrato @TypeOf. 🔍
@TypeOf restituisce un tipo
Fornisca a @TypeOf una o più espressioni e restituirà il loro tipo, calcolato interamente in fase di compilazione.
const T = @TypeOf(value);Non esegue l'espressione
L'argomento di @TypeOf viene solo analizzato, mai eseguito. Anche una chiamata di funzione al suo interno viene esaminata, ma non viene realmente eseguita.
Acquisire il tipo di un parametro
All'interno di una funzione generica è possibile assegnare un nome al tipo di qualsiasi argomento e riutilizzarlo, ad esempio per dichiarare una variabile locale corrispondente.
fn echo(x: anytype) void {
const T = @TypeOf(x);
_ = T;
}Ottenere un nome leggibile
Il costrutto integrato @typeName trasforma un tipo in una stringa leggibile, utile per la stampa di debug o per i messaggi di errore.
const name = @typeName(i32);Riflessione più approfondita con @typeInfo
Per ottenere tutti i dettagli, @typeInfo restituisce una tagged union che descrive il tipo: indica se è un intero, una struct, un puntatore e altro ancora.
const info = @typeInfo(i32);Diramare in base alla categoria del tipo
Poiché il risultato è una tagged union, è possibile usare switch su di esso per gestire in modo diverso interi, numeri in virgola mobile e struct in un'unica funzione generica.
switch (@typeInfo(T)) {
.int => {},
else => {},
}Leggere la larghezza in bit di un intero
Quando un tipo è un intero, le sue informazioni includono campi come bits e il segno, consentendo di adattare la logica alla larghezza esatta.
const bits = @typeInfo(u16).int.bits;La riflessione mantiene il codice generico
Ispezionando i tipi invece di codificarli direttamente, una funzione può gestire correttamente molti tipi di input. Questo è il cuore della reflection di Zig. ✨
Tutto in fase di compilazione
Ogni costrutto integrato di riflessione viene eseguito durante la compilazione, quindi questa introspezione non aggiunge alcun overhead di runtime al programma finito.
Elencare i campi di una struct
Per una struct, @typeInfo espone un array di campi che è possibile attraversare in fase di compilazione per leggere il nome e il tipo di ogni campo.
const fields = @typeInfo(Point).@"struct".fields;Verifica rapida
All'interno di una funzione generica dispone di un valore x e vuole conoscerne il tipo. Quale costrutto integrato glielo fornisce?
Riepilogo
Usi @TypeOf per conoscere il tipo di un valore e @typeInfo per esaminarne la struttura. Usare switch su queste informazioni permette a una funzione di adattarsi a molti tipi. 🎯
Domande Frequenti
La lezione «@TypeOf e riflessione sui tipi» è gratuita?
Sì — il testo completo di «@TypeOf e riflessione sui tipi» è 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 Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.
Cosa imparerò in «@TypeOf e riflessione sui tipi»?
Ispezionare i tipi per mantenere il codice generico Eserciti Zig 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 Zig Academy?
Non è richiesta alcuna esperienza precedente. Zig 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 «@TypeOf e riflessione sui tipi»?
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 Zig Academy?
Sì. Ogni lezione Zig 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
- Funzioni che accettano un tipo
- Strutture dati generiche
- @TypeOf e riflessione sui tipi
- Parametri anytype