0Pricing
Zig Academy · Aula

@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

  1. Funções que recebem um tipo
  2. Estruturas de dados genéricas
  3. @TypeOf e reflexão de tipos
  4. Parâmetros anytype
← Voltar para Zig Academy