Zig Academy · Lezione

Riflettere sui campi con @typeInfo

Esamini la struttura di un tipo in fase di compilazione.

Lezione 1 di 413 passaggi

Riflettere sui campi con @typeInfo è una lezione Zig 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 Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

Esaminare qualsiasi tipo

Zig consente al codice di esaminare i propri tipi durante la compilazione. Il built-in @typeInfo fornisce l'intera struttura di un tipo sotto forma di dati. 🔎

Restituisce un valore Type.Info

@typeInfo accetta un tipo e restituisce un valore std.builtin.Type. Questo valore è una tagged union che descrive esattamente il tipo passato.

const info = @typeInfo(u32);

Il tag indica il tipo

Il tag della union indica la categoria: una struct, un intero, un puntatore e così via. Può usare switch su di esso per reagire a ogni tipo di tipo.

switch (@typeInfo(T)) {
    .Struct => {},
    else => {},
}

Raggiungere il payload della struct

Quando il tipo è una struct, la variante .Struct contiene un payload che descrive i suoi campi, le dichiarazioni e il layout.

const s = @typeInfo(Point).Struct;

I campi risiedono in un array

Il payload della struct contiene un array di fields. Ogni elemento è uno StructField che contiene il nome, il tipo e altri dettagli di un campo.

const fields = @typeInfo(Point).Struct.fields;

Leggere nome e tipo di un campo

Ogni StructField espone una stringa name e un tipo. Entrambi sono valori di compile time che può stampare o usare in un ramo condizionale.

const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;

Scorrere i campi con inline for

Poiché l'elenco dei campi è comptime, lo percorre con inline for. Il ciclo viene srotolato e a ogni campo viene assegnato il proprio codice concreto.

inline for (@typeInfo(T).Struct.fields) |field| {
    _ = field.name;
}

Esaminare anche i tipi interi

Per un intero, la variante .Int rivela il segno e l'ampiezza in bit, così può adattare la logica al tipo numerico esatto.

const i = @typeInfo(i16).Int;
const bits = i.bits;

Gli enum espongono i propri membri

La variante .Enum elenca ogni campo dell'enum con il relativo nome e valore intero, consentendo di generare codice per ogni opzione.

const e = @typeInfo(Color).Enum;
const fields = e.fields;

I puntatori rivelano il proprio target

Per i puntatori, la variante .Pointer indica il tipo figlio, il tipo di dimensione e se il puntatore è const, così può rimuovere i vari livelli.

const p = @typeInfo(*u8).Pointer;
const child = p.child;

Alla base di librerie reali

La reflection alimenta il codice JSON e di formattazione di Zig: queste funzionalità leggono i campi con @typeInfo e gestiscono qualsiasi struct venga fornita. ✨

Verifica rapida

Vuole ottenere a compile time l'elenco dei campi di una struct. Quale espressione glielo fornisce?

Riepilogo

@typeInfo trasforma un tipo in dati: esegua uno switch sul suo tag, poi legga campi, bit o membri e li percorra con inline for. 🎯

Gratis per iniziare

Impara Zig 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 «Riflettere sui campi con @typeInfo» è gratuita?

Sì — il testo completo di «Riflettere sui campi con @typeInfo» è 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 «Riflettere sui campi con @typeInfo»?

Esamini la struttura di un tipo in fase di compilazione. 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 1 di 4.

Quanto tempo richiede la lezione «Riflettere sui campi con @typeInfo»?

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

  1. Riflettere sui campi con @typeInfo
  2. Creare tipi con @Type
  3. Convalida a tempo di compilazione e @compileError
  4. Generare codice con comptime
← Torna a Zig Academy