Refletindo campos com @typeInfo
Inspecione a estrutura de um tipo em tempo de compilação.
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. 🎯
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
- Refletindo campos com @typeInfo
- Construindo tipos com @Type
- Validação em tempo de compilação e @compileError
- Gerando código com comptime