Dart Academy · Aula

Funções de Ordem Superior e Currying

Passe, retorne e aplique funções parcialmente.

Aula 1 de 413 etapas

Funções de Ordem Superior e Currying é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 1 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 Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.

Funções São Valores

No Dart, uma função é apenas um valor que você pode armazenar em uma variável. Essa única ideia abre todo o mundo dos padrões funcionais. 🎯

int square(int x) => x * x;
var op = square;
print(op(4)); // 16

O Que Significa Ordem Superior

Uma função de ordem superior é aquela que recebe uma função como argumento ou retorna uma função. Você já as utilizou com métodos de listas.

Passando uma Função

Quando você passa um comportamento como argumento, quem chama decide o que acontece. Aqui, apply executa qualquer função que receba.

int apply(int v, int Function(int) f) => f(v);
print(apply(5, (x) => x + 1)); // 6

Sintaxe do Tipo de Função

O tipo int Function(int) significa: uma função que recebe um int e retorna um int. Os tipos deixam sua intenção absolutamente clara.

void run(String Function(String) format) {
  print(format('hi'));
}

Retornando uma Função

Uma função de ordem superior também pode retornar uma função. A função retornada se lembra dos valores ao redor dela quando foi criada.

Function makeAdder(int n) {
  return (int x) => x + n;
}

Usando a Função Retornada

Chame o criador uma vez para montar uma função especializada e depois reutilize-a. Cada resultado é sua própria pequena ferramenta configurada.

var add10 = makeAdder(10);
print(add10(5)); // 15
print(add10(1)); // 11

Conheça Currying

Currying transforma uma função com vários argumentos em uma cadeia de funções com um único argumento. Você fornece um valor de cada vez.

int Function(int) add(int a) => (int b) => a + b;
print(add(3)(4)); // 7

Aplicação Parcial

Defina o primeiro argumento agora e os demais depois. Isso é aplicação parcial e permite criar auxiliares reutilizáveis e pré-carregados.

var add3 = add(3);
print(add3(10)); // 13
print(add3(20)); // 23

Por Que Usar Currying

Currying permite criar funções especializadas a partir de funções gerais sem reescrever a lógica. Ele se destaca quando você compõe pequenos fluxos de processamento.

Tipo de Funções como Parâmetros

Você pode nomear tipos de funções complexos com um typedef para manter as assinaturas legíveis em todo o código.

typedef IntOp = int Function(int);
int apply(int v, IntOp f) => f(v);

Atalho para Referenciar uma Função

Em vez de envolver um método em uma lambda, passe o nome dele diretamente. Essa referência direta mantém as chamadas limpas e organizadas.

['1', '2', '3'].map(int.parse).forEach(print);

Verificação Rápida

Vamos verificar se você compreendeu as funções de ordem superior.

Recapitulação

Funções são valores, portanto você pode passá-las e retorná-las. Currying e a aplicação parcial transformam funções gerais em ferramentas especializadas. Bom trabalho! 🚀

Grátis para começar

Aprenda Dart 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 de Ordem Superior e Currying” é grátis?

Sim — o texto completo de “Funções de Ordem Superior e Currying” é 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 Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.

O que vou aprender em “Funções de Ordem Superior e Currying”?

Passe, retorne e aplique funções parcialmente. Você pratica Dart 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 Dart Academy?

Nenhuma experiência prévia é necessária. Dart 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 1 de 4.

Quanto tempo leva a aula “Funções de Ordem Superior e Currying”?

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 Dart Academy?

Sim. Cada aula de Dart 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 de Ordem Superior e Currying
  2. fold, reduce e expansão
  3. Iteráveis Preguiçosos e Geradores com sync*
  4. Composição de Pipelines de Funções Puras
← Voltar para Dart Academy