@TypeOf e reflexão de tipos
Inspecione tipos para manter o código genérico.
@TypeOf e reflexão de tipos é 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.
Perguntar sobre tipos
Código genérico frequentemente precisa saber o tipo de um valor sem que você o escreva explicitamente. O Zig resolve isso com o recurso integrado @TypeOf. 🔍
@TypeOf retorna um tipo
Forneça uma ou mais expressões a @TypeOf e ele retornará seus tipos, calculados inteiramente em tempo de compilação.
const T = @TypeOf(value);A expressão não é executada
O argumento de @TypeOf apenas é inspecionado, nunca executado. Até mesmo uma chamada de função dentro dele é examinada, mas não é realmente executada.
Capturar o tipo de um parâmetro
Dentro de uma função genérica, você pode nomear o tipo de qualquer argumento e reutilizá-lo, por exemplo, para declarar uma variável local correspondente.
fn echo(x: anytype) void {
const T = @TypeOf(x);
_ = T;
}Obter um nome legível
O recurso integrado @typeName transforma um tipo em uma string legível, o que é útil para impressão de depuração ou mensagens de erro.
const name = @typeName(i32);Reflexão mais profunda com @typeInfo
Para obter todos os detalhes, @typeInfo retorna uma união marcada que descreve o tipo: se é um inteiro, uma struct, um ponteiro e muito mais.
const info = @typeInfo(i32);Ramificar conforme a categoria do tipo
Como o resultado é uma união marcada, você pode usar switch sobre ele para tratar inteiros, números de ponto flutuante e structs de maneiras diferentes em uma única função genérica.
switch (@typeInfo(T)) {
.int => {},
else => {},
}Ler a largura em bits de um inteiro
Quando um tipo é um inteiro, suas informações contêm campos como bits e sinal, permitindo adaptar sua lógica à largura exata.
const bits = @typeInfo(u16).int.bits;A reflexão mantém o código genérico
Ao inspecionar tipos em vez de codificá-los diretamente, uma função pode atender corretamente a muitos tipos de entrada. Esse é o cerne da reflexão em Zig. ✨
Tudo em tempo de compilação
Todos os recursos integrados de reflexão são executados durante a compilação, portanto essa introspecção não acrescenta nenhuma sobrecarga em tempo de execução ao programa final.
Listar os campos de uma struct
Para uma struct, @typeInfo expõe uma matriz de campos que você pode percorrer em tempo de compilação para ler o nome e o tipo de cada campo.
const fields = @typeInfo(Point).@"struct".fields;Verificação rápida
Dentro de uma função genérica, você tem um valor x e quer saber seu tipo. Qual recurso integrado fornece essa informação?
Recapitulação
Use @TypeOf para descobrir o tipo de um valor e @typeInfo para inspecionar sua estrutura. Usar switch sobre essas informações permite que uma função se adapte a muitos tipos. 🎯
Perguntas Frequentes
A aula “@TypeOf e reflexão de tipos” é grátis?
Sim — o texto completo de “@TypeOf e reflexão de tipos” é 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 “@TypeOf e reflexão de tipos”?
Inspecione tipos para manter o código genérico. 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 “@TypeOf e reflexão de tipos”?
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
- Funções que recebem um tipo
- Estruturas de dados genéricas
- @TypeOf e reflexão de tipos
- Parâmetros anytype