0Pricing
Zig Academy · Aula

Construindo tipos com @Type

Construa novos tipos de forma programática.

Construindo tipos com @Type é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 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.

O inverso de @typeInfo

Se @typeInfo transforma um tipo em dados, @Type transforma os dados novamente em um tipo real. Juntos, eles permitem remodelar tipos em tempo de compilação. 🛠️

Fornecer um valor Type.Info

@Type recebe um valor std.builtin.Type e produz o tipo concreto que ele descreve. Você fornece uma descrição e ele devolve um tipo.

const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });

Construir um tipo inteiro

O exemplo acima constrói u8 do zero. Altere bits para 16 e você obterá u16, tudo decidido enquanto o programa é compilado.

const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });

Fazer uma conversão de ida e volta de um tipo

Passar um tipo por @typeInfo e depois por @Type devolve exatamente o mesmo tipo. Isso prova que os dois recursos integrados são inversos exatos.

const Same = @Type(@typeInfo(u32));

Descrever uma Struct como Dados

Para criar uma struct, preencha uma matriz de StructField. Cada campo precisa de um nome, um tipo, um alinhamento e um ponteiro padrão.

const f = std.builtin.Type.StructField;

Montar o Payload da Struct

Envolva os campos em um payload .Struct com um layout e um sinalizador is_tuple, depois passe tudo para @Type.

const info = .{ .Struct = .{
    .layout = .auto,
    .fields = my_fields,
    .decls = &.{},
    .is_tuple = false,
} };

Gerar um Tipo de Struct Novo

Chame @Type com esse payload para obter um tipo de struct totalmente novo, criado pela sua própria lógica em vez de escrito manualmente.

const Generated = @Type(info);

Os Valores Padrão Precisam de um Ponteiro Comptime

O default_value de um campo é um ponteiro const opcional para o valor, ou null quando não há valor padrão. O ponteiro precisa ser conhecido em comptime.

const dv: ?*const anyopaque = &@as(u8, 0);

Criar Enums e Muito Mais

O mesmo recurso funciona além de structs: o payload .Enum permite que @Type sintetize tipos enum a partir de uma lista calculada de membros.

Por que Construir Tipos

Tipos gerados dão suporte a serializadores e ORMs: derive automaticamente um tipo de configuração ou de linha compactado, em vez de editá-lo manualmente. ✨

Combinar com Reflexão

O padrão mais poderoso lê um tipo com @typeInfo, transforma os dados e depois reconstrói um novo tipo com @Type, por exemplo, adicionando um campo.

Verificação Rápida

Você tem um valor std.builtin.Type que descreve uma struct. O que o transforma em um tipo utilizável?

Recapitulação

@Type cria tipos reais a partir de dados Type.Info, sendo o inverso de @typeInfo. Combine os dois para ler, transformar e regenerar tipos. 🎯

Perguntas Frequentes

A aula “Construindo tipos com @Type” é grátis?

Sim — o texto completo de “Construindo tipos com @Type” é 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 “Construindo tipos com @Type”?

Construa novos tipos de forma programática. 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 2 de 4.

Quanto tempo leva a aula “Construindo tipos com @Type”?

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