Zig Academy · Aula

Parâmetros anytype

Aceite qualquer argumento usando tipagem estrutural.

Aula 4 de 413 etapas

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. 🎯

Grátis para começar

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

  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