Zig Academy · Lezione

Creare tipi con @Type

Costruisca nuovi tipi a livello programmatico.

Lezione 2 di 413 passaggi

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

L'opposto di @typeInfo

Se @typeInfo trasforma un tipo in dati, @Type trasforma i dati di nuovo in un tipo reale. Insieme consentono di rimodellare i tipi a compile time. 🛠️

Fornirgli un valore Type.Info

@Type accetta un valore std.builtin.Type e produce il tipo concreto che descrive. Gli fornisce una descrizione e ottiene un tipo.

const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });

Costruire un tipo intero

L'esempio precedente costruisce u8 da zero. Modifichi bits in 16 per ottenere u16: tutto viene deciso durante la compilazione del programma.

const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });

Convertire un tipo avanti e indietro

Passare un tipo attraverso @typeInfo e poi @Type restituisce esattamente lo stesso tipo. Questo dimostra che i due builtin sono inversi perfetti.

const Same = @Type(@typeInfo(u32));

Descrivere una Struct come dati

Per costruire una struct, si compila un array di StructField. Ogni campo richiede un nome, un tipo, un allineamento e un puntatore predefinito.

const f = std.builtin.Type.StructField;

Assemblare il payload della Struct

Racchiuda i campi in un payload .Struct con un layout e un flag is_tuple, quindi passi l'intero oggetto a @Type.

const info = .{ .Struct = .{
    .layout = .auto,
    .fields = my_fields,
    .decls = &.{},
    .is_tuple = false,
} };

Generare un nuovo tipo Struct

Chiami @Type su quel payload per ottenere un tipo struct completamente nuovo, costruito dalla Sua logica anziché scritto manualmente.

const Generated = @Type(info);

I valori predefiniti richiedono un puntatore comptime

Il default_value di un campo è un puntatore const facoltativo al valore, oppure null quando non esiste alcun valore predefinito. Il puntatore deve essere noto a comptime.

const dv: ?*const anyopaque = &@as(u8, 0);

Costruire enum e altro

La stessa tecnica funziona anche oltre le struct: il payload .Enum permette a @Type di sintetizzare tipi enum a partire da un elenco calcolato di membri.

Perché costruire dei tipi

I tipi generati alimentano serializer e ORM: può derivare automaticamente un tipo config o row packed invece di modificarlo manualmente. ✨

Abbinarlo alla reflection

Lo schema più potente legge un tipo con @typeInfo, trasforma i dati e poi ricostruisce un nuovo tipo con @Type, ad esempio aggiungendo un campo.

Verifica rapida

Dispone di un valore std.builtin.Type che descrive una struct. Che cosa lo trasforma in un tipo utilizzabile?

Riepilogo

@Type costruisce tipi reali a partire dai dati Type.Info, come inverso di @typeInfo. Li abbini per leggere, trasformare e rigenerare i tipi. 🎯

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 «Creare tipi con @Type» è gratuita?

Sì — il testo completo di «Creare tipi con @Type» è 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 «Creare tipi con @Type»?

Costruisca nuovi tipi a livello programmatico. 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 2 di 4.

Quanto tempo richiede la lezione «Creare tipi con @Type»?

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