0Pricing
Zig Academy · Leçon

Fonctions qui prennent un type

Utilisez des paramètres T comptime pour créer des génériques.

Fonctions qui prennent un type 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.

Les génériques à la manière de Zig

Zig n’a pas de syntaxe distincte pour les génériques. Une fonction peut plutôt accepter un type comme l’un de ses paramètres et l’utiliser comme n’importe quelle autre valeur. ✨

Un paramètre de type est comptime

Comme un type doit être connu lors de la construction du code, le paramètre de type est toujours marqué comptime. L’appelant transmet un type réel.

fn first(comptime T: type, items: []const T) T {
    return items[0];
}

type est un véritable type

Dans Zig, le mot type est lui-même un type. Un paramètre déclaré comme type peut donc représenter absolument n’importe quel type.

comptime T: type

Utiliser T dans la signature

Une fois le type nommé T, vous pouvez l’utiliser pour les paramètres suivants et le type de retour, afin de les relier tous entre eux.

fn max(comptime T: type, a: T, b: T) T {
    return if (a > b) a else b;
}

Appeler une fonction générique

Pour l’appeler, transmettez d’abord le type concret, puis les arguments ordinaires. Ici, nous demandons la plus grande de deux valeurs i32.

const m = max(i32, 3, 9);

Une fonction, plusieurs types

La même fonction fonctionne avec tout type prenant en charge les opérations utilisées. Remplacez i32 par f64 et le code reste adapté.

const f = max(f64, 1.5, 2.5);

Zig spécialise chaque appel

Pour chaque type distinct que vous transmettez, Zig génère une copie dédiée de la fonction. C’est la monomorphisation, effectuée lors de la compilation.

Le corps reste générique

Vous écrivez explicitement le type lors de l’appel, mais le corps reste générique. Zig vérifie que les opérations utilisées sont valides pour le T reçu.

type n’implique aucun boxing caché

Transmettre un véritable type est différent du polymorphisme à l’exécution : il n’y a ni vtable ni boxing, seulement une copie concrète choisie lors de la construction.

Les erreurs apparaissent à la compilation

Si vous appelez max avec un type qui ne possède pas d’opérateur supérieur à, Zig signale le problème lors de la construction de cette spécialisation, et non à l’exécution.

Les paramètres de type viennent en premier

Par convention, le paramètre de type comptime est placé avant les paramètres de valeur, afin que le type soit connu avant la description des données.

fn clone(comptime T: type, value: T) T {
    return value;
}

Vérification rapide

Vous voulez une fonction qui fonctionne avec de nombreux types dans Zig. Comment déclarez-vous son paramètre de type ?

Récapitulatif

Transmettez un paramètre comptime T: type pour rendre une fonction générique. Zig construit une version spécialisée pour chaque type réellement utilisé. 🎯

Questions Fréquemment Posées

La leçon « Fonctions qui prennent un type » est-elle gratuite ?

Oui — le texte complet de « Fonctions qui prennent un 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 « Fonctions qui prennent un type » ?

Utilisez des paramètres T comptime pour créer des génériques. 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 « Fonctions qui prennent un 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

  1. Fonctions qui prennent un type
  2. Structures de données génériques
  3. @TypeOf et réflexion sur les types
  4. Paramètres anytype
← Retour à Zig Academy