@TypeOf et réflexion sur les types
Inspectez les types pour rester générique.
@TypeOf et réflexion sur les types est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.
Interroger les types
Le code générique doit souvent connaître le type d’une valeur sans que vous l’écriviez explicitement. Zig répond à ce besoin avec le built-in @TypeOf. 🔍
@TypeOf renvoie un type
Donnez une ou plusieurs expressions à @TypeOf et il renvoie leur type, calculé entièrement à la compilation.
const T = @TypeOf(value);L’expression n’est pas exécutée
L’argument de @TypeOf est seulement inspecté, jamais exécuté. Même un appel de fonction placé à l’intérieur est examiné, mais n’est pas réellement exécuté.
Capturer le type d’un paramètre
Dans une fonction générique, vous pouvez nommer le type de n’importe quel argument et le réutiliser, par exemple pour déclarer une variable locale correspondante.
fn echo(x: anytype) void {
const T = @TypeOf(x);
_ = T;
}Obtenir un nom lisible
Le built-in @typeName transforme un type en chaîne lisible, ce qui est pratique pour l’affichage de débogage ou les messages d’erreur.
const name = @typeName(i32);Une réflexion plus approfondie avec @typeInfo
Pour obtenir tous les détails, @typeInfo renvoie une union étiquetée décrivant le type : entier, structure, pointeur, etc.
const info = @typeInfo(i32);Choisir selon la catégorie du type
Comme le résultat est une union étiquetée, vous pouvez effectuer un switch dessus pour traiter différemment les entiers, les flottants et les structures dans une même fonction générique.
switch (@typeInfo(T)) {
.int => {},
else => {},
}Lire la largeur en bits d’un entier
Lorsqu’un type est un entier, ses informations contiennent des champs tels que bits et le signe. Vous pouvez ainsi adapter votre logique à sa largeur exacte.
const bits = @typeInfo(u16).int.bits;La réflexion conserve le caractère générique du code
En inspectant les types plutôt qu’en les codant en dur, une seule fonction peut gérer correctement de nombreux types d’entrée. C’est le cœur de la réflexion de Zig. ✨
Tout à la compilation
Chaque built-in de réflexion s’exécute lors de la compilation. Cette introspection n’ajoute donc aucun surcoût à l’exécution au programme final.
Énumérer les champs d’une structure
Pour une structure, @typeInfo expose un tableau de champs que vous pouvez parcourir à la compilation afin de lire le nom et le type de chaque champ.
const fields = @typeInfo(Point).@"struct".fields;Vérification rapide
Dans une fonction générique, vous avez une valeur x et vous voulez connaître son type. Quel built-in vous le fournit ?
Récapitulatif
Utilisez @TypeOf pour connaître le type d’une valeur et @typeInfo pour en inspecter la structure. Un switch sur ces informations permet à une seule fonction de s’adapter à de nombreux types. 🎯
Questions Fréquemment Posées
La leçon « @TypeOf et réflexion sur les types » est-elle gratuite ?
Oui — le texte complet de « @TypeOf et réflexion sur les types » 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 « @TypeOf et réflexion sur les types » ?
Inspectez les types pour rester générique. 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 3 sur 4.
Combien de temps prend la leçon « @TypeOf et réflexion sur les types » ?
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
- Fonctions qui prennent un type
- Structures de données génériques
- @TypeOf et réflexion sur les types
- Paramètres anytype