Funções genéricas sobre traits
Escreva uma função para vários tipos.
Funções genéricas sobre traits é uma aula grátis de Mojo 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 Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.
Uma função, vários tipos
O verdadeiro poder dos traços está no código genérico: escreva uma função uma vez e ela funcionará para todo tipo em conformidade. 🚀
Um traço como limite
Você usa um traço como limite em um parâmetro genérico, garantindo que o tipo tenha os métodos que você chama.
Sintaxe de parâmetros genéricos
Dentro de colchetes, você nomeia um parâmetro de tipo e o traço que ele precisa satisfazer; depois, usa-o como qualquer tipo.
fn announce[T: Greetable](item: T):
print(item.greet())Chamando métodos do traço
Dentro da função, você pode chamar qualquer método garantido pelo traço. O compilador sabe que greet existe em T.
Funciona para todos os tipos em conformidade
Passe um Dog ou um robô para a mesma função. Ambos estão em conformidade com Greetable, portanto os dois são aceitos sem dificuldade.
announce(Dog("Rex"))
announce(Robot())A segurança de tipos permanece
Os genéricos não são permissivos. Se um tipo não satisfizer o limite, o compilador o recusará antes de o programa ser executado.
Nenhuma penalidade em tempo de execução
O Mojo especializa o código genérico em tempo de compilação, gerando uma versão rápida para cada tipo. A flexibilidade não custa velocidade.
Menos duplicação
Sem genéricos, você teria de copiar uma função para cada tipo. Um limite de traço permite que uma definição atenda a todos, reduzindo a duplicação.
Vários limites
Um parâmetro pode exigir vários traços ao mesmo tempo, garantindo que o tipo tenha todas as capacidades de que a função precisa.
Projetando em torno de traços
Boas APIs do Mojo solicitam o menor traço de que precisam. As funções permanecem flexíveis e, ao mesmo tempo, expressam requisitos exatos.
O quadro completo
Traço, conformidade e genéricos se combinam: defina um contrato, implemente-o e depois escreva uma função reutilizável sobre ele.
fn print_all[T: Stringable](x: T):
print(String(x))Verificação rápida
Por que usar um limite de traço em uma função genérica?
Recapitulação
Funções genéricas com um limite de traço funcionam com todos os tipos em conformidade, mantendo segurança de tipos e velocidade. Agora você escreve Mojo reutilizável! 🎉
Aprenda Mojo 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 “Funções genéricas sobre traits” é grátis?
Sim — o texto completo de “Funções genéricas sobre traits” é 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 Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.
O que vou aprender em “Funções genéricas sobre traits”?
Escreva uma função para vários tipos. Você pratica Mojo 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 Mojo Academy?
Nenhuma experiência prévia é necessária. Mojo 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 “Funções genéricas sobre traits”?
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 Mojo Academy?
Sim. Cada aula de Mojo 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
- O que é um trait?
- Adaptando uma struct a um trait
- Traits integrados, como Copyable
- Funções genéricas sobre traits