Construire des types avec @Type
Construisez de nouveaux types par programmation.
Construire des types avec @Type est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.
L’inverse de @typeInfo
Si @typeInfo transforme un type en données, @Type transforme les données en véritable type. Ensemble, ils vous permettent de remodeler les types à la compilation. 🛠️
Lui fournir une valeur Type.Info
@Type prend une valeur std.builtin.Type et produit le type concret qu’elle décrit. Vous lui fournissez une description et il vous renvoie un type.
const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });Construire un type entier
L’exemple ci-dessus construit u8 à partir de rien. Remplacez bits par 16 et vous obtenez u16, le tout étant décidé pendant la compilation du programme.
const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });Faire le trajet aller-retour d’un type
Faire passer un type par @typeInfo puis par @Type renvoie exactement le même type. Cela prouve que ces deux composants intégrés sont des inverses exacts.
const Same = @Type(@typeInfo(u32));Décrire une structure sous forme de données
Pour construire une structure, vous remplissez un tableau de StructField. Chaque champ nécessite un nom, un type, un alignement et un pointeur par défaut.
const f = std.builtin.Type.StructField;Assembler les données de la structure
Enveloppez vos champs dans des données .Struct avec une disposition et un indicateur is_tuple, puis transmettez l’ensemble à @Type.
const info = .{ .Struct = .{
.layout = .auto,
.fields = my_fields,
.decls = &.{},
.is_tuple = false,
} };Générer un nouveau type de structure
Appelez @Type sur cette charge utile et vous obtenez un type de structure entièrement nouveau, construit par votre propre logique plutôt qu'écrit à la main.
const Generated = @Type(info);Les valeurs par défaut nécessitent un pointeur comptime
Le default_value d'un champ est un pointeur const facultatif vers la valeur, ou null lorsqu'il n'existe aucune valeur par défaut. Le pointeur doit être connu à la compilation.
const dv: ?*const anyopaque = &@as(u8, 0);Construire des énumérations et bien plus
La même astuce fonctionne au-delà des structures : la charge utile .Enum permet à @Type de synthétiser des types énumérés à partir d'une liste calculée de membres.
Pourquoi construire des types ?
Les types générés alimentent les sérialiseurs et les ORM : dérivez automatiquement un type de configuration ou de ligne compact au lieu de le modifier à la main. ✨
L'associer à la réflexion
Le modèle le plus puissant lit un type avec @typeInfo, transforme les données, puis reconstruit un nouveau type avec @Type, par exemple en lui ajoutant un champ.
Vérification rapide
Vous disposez d'une valeur std.builtin.Type qui décrit une structure. Qu'est-ce qui la transforme en type utilisable ?
Récapitulatif
@Type construit de vrais types à partir des données Type.Info, l'inverse de @typeInfo. Associez-les pour lire, transformer et régénérer des types. 🎯
Questions Fréquemment Posées
La leçon « Construire des types avec @Type » est-elle gratuite ?
Oui — le texte complet de « Construire des types avec @Type » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Construire des types avec @Type » ?
Construisez de nouveaux types par programmation. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Zig Academy ?
Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Construire des types avec @Type » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?
Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Réfléchir sur les champs avec @typeInfo
- Construire des types avec @Type
- Validation à la compilation et @compileError
- Générer du code avec comptime