0Pricing
Zig Academy · Aula

Validação em tempo de compilação e @compileError

Interrompa a compilação com mensagens claras.

Validação em tempo de compilação e @compileError é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.

Detectar Erros Antes da Execução

Zig permite rejeitar usos incorretos enquanto o código é compilado. O recurso integrado @compileError interrompe a compilação com uma mensagem escrita por você. 🛑

Falhar com uma Mensagem Clara

@compileError recebe uma string comptime e interrompe a compilação, exibindo exatamente esse texto para que quem chamou saiba o que deu errado.

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

Proteger uma Função Genérica

Dentro de um ramo comptime, você pode rejeitar tipos indesejados. Aqui, somente inteiros são aceitos; qualquer outra coisa aciona @compileError no local da chamada.

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

Os Erros Apontam para Quem Chama

Uma verificação comptime é executada quando a função é instanciada, então o error aparece onde o tipo incorreto foi realmente passado.

Verificar Fatos com comptime

Para invariantes simples, comptime assert interrompe a compilação quando uma condição é falsa, de modo semelhante a um assert em tempo de execução, mas mais cedo.

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

Verificar uma Declaração

Use @hasDecl para confirmar que um tipo fornece um método ou uma constante antes de chamá-lo e, caso contrário, falhe com clareza.

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

Verificar um Campo

Da mesma forma, @hasField informa se uma struct possui um campo com determinado nome, o que é útil ao validar formatos em tempo de compilação.

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

Criar Mensagens a partir de Nomes de Tipos

Combine @typeName com std.fmt para inserir o tipo problemático na sua mensagem, fornecendo um erro preciso e fácil de ler para quem chama.

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

Strings se Unem em Tempo de Compilação

O operador ++ concatena strings comptime, permitindo compor textos de erro detalhados sem nenhuma alocação no heap.

Custo Zero em Tempo de Execução

Toda essa validação acontece durante a compilação. Um programa compilado com sucesso não tem nenhum custo adicional de verificação em tempo de execução. ⚡

Melhor do que uma Falha em Execução

A validação comptime transforma uma possível falha em uma mensagem amigável durante a compilação, para que o uso incorreto seja detectado cedo e bem explicado.

Verificação Rápida

Você quer interromper a compilação com uma mensagem personalizada quando um tipo não for compatível. O que deve chamar?

Recapitulação

@compileError, junto com verificações como @hasDecl e comptime assert, rejeita usos incorretos durante a compilação, sem custo em tempo de execução. 🎯

Perguntas Frequentes

A aula “Validação em tempo de compilação e @compileError” é grátis?

Sim — o texto completo de “Validação em tempo de compilação e @compileError” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.

O que vou aprender em “Validação em tempo de compilação e @compileError”?

Interrompa a compilação com mensagens claras. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Zig Academy?

Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Validação em tempo de compilação e @compileError”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Zig Academy?

Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Refletindo campos com @typeInfo
  2. Construindo tipos com @Type
  3. Validação em tempo de compilação e @compileError
  4. Gerando código com comptime
← Voltar para Zig Academy