Parâmetros anytype
Aceite qualquer argumento usando tipagem estrutural.
Parâmetros anytype é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 4 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.
Aceitar qualquer coisa com anytype
Às vezes, você não quer nomear o tipo. Declare um parâmetro como anytype e o Zig inferirá seu tipo a partir do argumento. 🦆
fn show(x: anytype) void {}O tipo é inferido na chamada
Com anytype, não há um parâmetro de tipo inicial. O argumento de cada chamada determina o tipo concreto daquela especialização.
show(42);
show(true);Isso é tipagem pato
O Zig apenas verifica se as operações do corpo funcionam para o argumento passado. Se ele tiver o formato correto, será aceito. Isso é tipagem pato.
Recuperar o tipo quando necessário
Dentro da função, você ainda pode obter o tipo usando @TypeOf e então usá-lo para variáveis locais ou valores de retorno.
fn dup(x: anytype) @TypeOf(x) {
return x;
}Ótimo para auxiliares no estilo de impressão
Funções que trabalham com muitos formatos aproveitam anytype. A própria função de impressão do Zig aceita uma tupla anytype de argumentos para formatar.
std.debug.print("{any}\n", .{x});As restrições vêm do corpo
Não há uma interface explícita. Se você chamar x.len internamente, somente argumentos que realmente tenham um campo len serão compilados.
fn size(x: anytype) usize {
return x.len;
}Os erros são específicos de cada especialização
Se quem chama passar um tipo que o corpo não consegue tratar, o Zig informará o erro nesse local da chamada, indicando o tipo exato que falhou.
Validar entradas com comptime
Para obter erros mais claros, você pode inspecionar o tipo antecipadamente com @typeInfo e rejeitar o formato incorreto usando uma verificação em tempo de compilação.
anytype versus comptime T: type
Use comptime T: type quando precisar nomear o tipo logo de início; prefira anytype quando a inferência e a flexibilidade forem mais importantes.
Ainda sem custo em tempo de execução
Como todo genérico do Zig, uma função anytype é especializada em tempo de compilação, portanto a flexibilidade inferida não custa nada durante a execução do programa.
Combinar anytype com tipos nomeados
Uma função pode combinar os dois estilos: um parâmetro anytype para entradas flexíveis junto a parâmetros tipados comuns para dados fixos.
fn join(sep: u8, x: anytype) void {
_ = sep;
_ = x;
}Verificação rápida
Você escreve fn show(x: anytype). Como o Zig decide o tipo concreto de x?
Recapitulação
A palavra-chave anytype permite que um parâmetro aceite qualquer argumento, com o tipo inferido e o corpo verificado a cada chamada. Essa é a tipagem pato flexível do Zig. 🎯
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 “Parâmetros anytype” é grátis?
Sim — o texto completo de “Parâmetros anytype” é 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 “Parâmetros anytype”?
Aceite qualquer argumento usando tipagem estrutural. 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 4 de 4.
Quanto tempo leva a aula “Parâmetros anytype”?
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