Zig Academy · Aula

Refletindo campos com @typeInfo

Inspecione a estrutura de um tipo em tempo de compilação.

Aula 1 de 413 etapas

Refletindo campos com @typeInfo é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 1 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.

Examine qualquer tipo por dentro

O Zig permite que seu código examine os próprios tipos enquanto é compilado. O recurso integrado @typeInfo fornece toda a estrutura de um tipo como dados. 🔎

Ele retorna um valor Type.Info

@typeInfo recebe um tipo e retorna um valor std.builtin.Type. Esse valor é uma união marcada que descreve exatamente que tipo de tipo você passou.

const info = @typeInfo(u32);

A marca informa de que tipo se trata

A marca da união informa a categoria: uma struct, um inteiro, um ponteiro e assim por diante. Você usa switch nela para reagir a cada tipo de tipo.

switch (@typeInfo(T)) {
    .Struct => {},
    else => {},
}

Acessar os dados da struct

Quando o tipo é uma struct, a variante .Struct contém dados que descrevem seus campos, declarações e organização.

const s = @typeInfo(Point).Struct;

Os campos ficam em um array

Os dados da struct têm um array de fields. Cada entrada é um StructField que contém o nome, o tipo e outros detalhes de um campo.

const fields = @typeInfo(Point).Struct.fields;

Ler o nome e o tipo de um campo

Cada StructField expõe uma string de name e um tipo. Ambos são valores de tempo de compilação que você pode imprimir ou usar em desvios condicionais.

const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;

Percorrer campos com inline for

Como a lista de campos é conhecida em tempo de compilação, você a percorre com inline for. O laço é expandido, fornecendo a cada campo seu próprio código concreto.

inline for (@typeInfo(T).Struct.fields) |field| {
    _ = field.name;
}

Inspecionar também os tipos inteiros

Para um inteiro, a variante .Int revela se ele tem sinal e sua largura em bits, permitindo adaptar a lógica ao tipo numérico exato.

const i = @typeInfo(i16).Int;
const bits = i.bits;

As enumerações expõem seus membros

A variante .Enum lista cada campo da enumeração com seu nome e valor inteiro, permitindo gerar código para cada opção.

const e = @typeInfo(Color).Enum;
const fields = e.fields;

Os ponteiros revelam seu destino

Para ponteiros, a variante .Pointer informa o tipo filho, a categoria de tamanho e se ele é const, permitindo remover as camadas.

const p = @typeInfo(*u8).Pointer;
const child = p.child;

Isso dá suporte a bibliotecas reais

A reflexão impulsiona o próprio código JSON e de formatação do Zig: esses recursos leem campos com @typeInfo e lidam com qualquer struct que você forneça. ✨

Verificação rápida

Você quer a lista dos campos de uma struct em tempo de compilação. Qual expressão a fornece?

Recapitulação

@typeInfo transforma um tipo em dados: use switch na sua marca e depois leia campos, bits ou membros e percorra-os com inline for. 🎯

Grátis para começar

Aprenda Zig com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Refletindo campos com @typeInfo” é grátis?

Sim — o texto completo de “Refletindo campos com @typeInfo” é 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 “Refletindo campos com @typeInfo”?

Inspecione a estrutura de um tipo em tempo de compilação. 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 1 de 4.

Quanto tempo leva a aula “Refletindo campos com @typeInfo”?

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