Réfléchir sur les champs avec @typeInfo
Examinez la structure d’un type à la compilation.
Réfléchir sur les champs avec @typeInfo est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Examiner n’importe quel type
Zig permet à votre code d’examiner ses propres types pendant la compilation. Le composant intégré @typeInfo vous fournit la structure complète d’un type sous forme de données. 🔎
Il renvoie une valeur Type.Info
@typeInfo prend un type et renvoie une valeur std.builtin.Type. Cette valeur est une union étiquetée qui décrit exactement la nature du type transmis.
const info = @typeInfo(u32);L’étiquette indique sa nature
L’étiquette de l’union indique la catégorie : structure, entier, pointeur, etc. Vous utilisez switch dessus pour réagir à chaque nature de type.
switch (@typeInfo(T)) {
.Struct => {},
else => {},
}Accéder aux données de la structure
Lorsque le type est une structure, la variante .Struct contient des données décrivant ses champs, ses déclarations et sa disposition.
const s = @typeInfo(Point).Struct;Les champs résident dans un tableau
Les données de la structure possèdent un tableau fields. Chaque entrée est un StructField contenant le nom, le type et d’autres détails d’un champ.
const fields = @typeInfo(Point).Struct.fields;Lire le nom et le type d’un champ
Chaque StructField expose une chaîne name et un type. Tous deux sont des valeurs connues à la compilation que vous pouvez afficher ou utiliser dans une branche.
const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;Parcourir les champs avec inline for
Comme la liste des champs est connue à la compilation, vous la parcourez avec inline for. La boucle est dépliée et fournit à chaque champ son propre code concret.
inline for (@typeInfo(T).Struct.fields) |field| {
_ = field.name;
}Examiner aussi les types entiers
Pour un entier, la variante .Int révèle le signe et la largeur en bits, ce qui vous permet d’adapter la logique au type numérique exact.
const i = @typeInfo(i16).Int;
const bits = i.bits;Les énumérations exposent leurs membres
La variante .Enum répertorie chaque champ de l’énumération avec son nom et sa valeur entière, ce qui vous permet de générer du code pour chaque option.
const e = @typeInfo(Color).Enum;
const fields = e.fields;Les pointeurs révèlent leur cible
Pour les pointeurs, la variante .Pointer indique le type enfant, la nature de la taille et le caractère constant ou non, afin que vous puissiez retirer les couches.
const p = @typeInfo(*u8).Pointer;
const child = p.child;Cela permet de créer de vraies bibliothèques
La réflexion alimente le code JSON et de formatage de Zig : ces composants lisent les champs avec @typeInfo et gèrent toute structure que vous leur fournissez. ✨
Vérification rapide
Vous voulez obtenir la liste des champs d’une structure à la compilation. Quelle expression vous la fournit ?
Récapitulatif
@typeInfo transforme un type en données : utilisez switch sur son étiquette, puis lisez les champs, les bits ou les membres et parcourez-les avec inline for. 🎯
Questions Fréquemment Posées
La leçon « Réfléchir sur les champs avec @typeInfo » est-elle gratuite ?
Oui — le texte complet de « Réfléchir sur les champs avec @typeInfo » 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 « Réfléchir sur les champs avec @typeInfo » ?
Examinez la structure d’un type à la compilation. 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 1 sur 4.
Combien de temps prend la leçon « Réfléchir sur les champs avec @typeInfo » ?
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