0Pricing
Zig Academy · Leçon

Validation à la compilation et @compileError

Échouez la compilation avec des messages clairs.

Validation à la compilation et @compileError 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.

Détecter les erreurs avant l'exécution

Zig vous permet de refuser une utilisation incorrecte pendant la compilation du code. Le @compileError intégré interrompt la construction avec le message que vous écrivez. 🛑

Échouer avec un message explicite

@compileError prend une chaîne connue à la compilation et interrompt la compilation en affichant exactement ce texte, afin que l'appelant sache ce qui s'est mal passé.

@compileError("this type is not supported");

Protéger une fonction générique

Dans une branche comptime, vous pouvez refuser les types indésirables. Ici, seuls les entiers sont acceptés ; tout le reste déclenche @compileError à l'emplacement de l'appel.

if (@typeInfo(T) != .Int) {
    @compileError("T must be an integer");
}

Les erreurs indiquent l'appelant

Une vérification comptime s'exécute lorsque la fonction est instanciée, de sorte que l'erreur apparaît à l'endroit où le mauvais type a réellement été transmis.

Affirmer des faits avec comptime

Pour les invariants simples, comptime assert interrompt la construction lorsqu'une condition est fausse, comme un assert à l'exécution, mais plus tôt.

comptime std.debug.assert(@sizeOf(T) <= 8);

Vérifier une déclaration

Utilisez @hasDecl pour confirmer qu'un type fournit une méthode ou une constante avant de l'appeler, puis échouez clairement si ce n'est pas le cas.

if (!@hasDecl(T, "init")) {
    @compileError("T needs an init function");
}

Vérifier un champ

De même, @hasField vous indique si une structure possède un champ nommé, ce qui est pratique pour valider des formes à la compilation.

const ok = @hasField(Config, "port");

Construire des messages à partir des noms de types

Combinez @typeName avec std.fmt pour intégrer le type problématique à votre message et fournir aux appelants une erreur précise et lisible.

@compileError("unsupported type: " ++ @typeName(T));

Les chaînes se concatènent à la compilation

L'opérateur ++ concatène les chaînes connues à la compilation, ce qui vous permet de composer un texte d'erreur détaillé sans aucune allocation sur le tas.

Aucun coût à l'exécution

Toute cette validation a lieu pendant la compilation. Un programme compilé avec succès ne comporte aucune surcharge de vérification à l'exécution. ⚡

Mieux qu'un plantage à l'exécution

La validation comptime transforme un plantage possible en message de construction convivial, afin que les utilisations incorrectes soient détectées tôt et bien expliquées.

Vérification rapide

Vous voulez interrompre la construction avec un message personnalisé lorsqu'un type n'est pas pris en charge. Que devez-vous appeler ?

Récapitulatif

@compileError, associé à des vérifications comme @hasDecl et comptime assert, rejette les utilisations incorrectes pendant la construction, sans aucun coût à l'exécution. 🎯

Questions Fréquemment Posées

La leçon « Validation à la compilation et @compileError » est-elle gratuite ?

Oui — le texte complet de « Validation à la compilation et @compileError » 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 « Validation à la compilation et @compileError » ?

Échouez la compilation avec des messages clairs. 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 « Validation à la compilation et @compileError » ?

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. Réfléchir sur les champs avec @typeInfo
  2. Construire des types avec @Type
  3. Validation à la compilation et @compileError
  4. Générer du code avec comptime
← Retour à Zig Academy