Funções Anônimas
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 44 de 65.
Até agora, você tem criado funções com nomes como calculateTotal ou printMessage. Mas às vezes você precisa de uma função simples para apenas uma tarefa específica, e dar a ela um nome parece desnecessário. É aqui que as funções anônimas se tornam úteis.
Uma função anônima é uma função sem nome. Você a define exatamente onde precisa, tornando seu código mais conciso para operações curtas e únicas. A sintaxe é direta - você simplesmente escreve a lista de parâmetros seguida pelo corpo da função:
(parameter) {
// corpo da função
}Funções anônimas são particularmente úteis com métodos de lista. Por exemplo, em vez de criar uma função nomeada separada para imprimir cada item em uma lista, você pode usar uma função anônima diretamente com o método forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Esta abordagem mantém seu código limpo e focado, especialmente quando a lógica da função é simples e não será reutilizada em outro lugar no seu programa.
Desafio
FácilCrie um programa que processe uma lista de nomes de funcionários usando funções anônimas. Seu programa demonstrará como usar funções anônimas com o método forEach para realizar diferentes operações em cada elemento da lista.
- Leia uma entrada de string contendo nomes de funcionários separados por vírgulas (ex:
"Alice,Bob,Charlie,Diana") - Divida a string de entrada em uma lista de nomes individuais usando o método
split() - Use o método
forEachcom uma função anônima para imprimir cada nome de funcionário com uma mensagem de boas-vindas - Use o método
forEachcom outra função anônima para imprimir cada nome de funcionário em letras maiúsculas - Use o método
forEachcom uma terceira função anônima para imprimir cada nome de funcionário junto com sua contagem de caracteres
Por exemplo, se a entrada for "Alice,Bob,Charlie", seu programa deve produzir a seguinte saída:
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersSe a entrada for "John,Sarah", seu programa deve produzir a seguinte saída:
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersSeu programa deve usar três chamadas separadas do método forEach, cada uma com sua própria função anônima. As funções anônimas devem ser definidas inline sem dar a elas nomes. Cada função anônima deve receber um único parâmetro representando o nome do funcionário atual e realizar a operação especificada. Use interpolação de string para formatar as mensagens de saída exatamente como mostrado acima.
Folha de consulta
Uma função anônima é uma função sem nome, definida exatamente onde você precisa dela. A sintaxe usa uma lista de parâmetros seguida pelo corpo da função:
(parameter) {
// corpo da função
}Funções anônimas são particularmente úteis com métodos de lista como forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Essa abordagem mantém o código limpo e focado para operações simples e únicas que não serão reutilizadas em outro lugar.
Experimente você mesmo
import 'dart:io';
void main() {
// Leia a string de entrada contendo os nomes dos funcionários
String? input = stdin.readLineSync();
// Divida a entrada em uma lista de nomes
List<String> employeeNames = input!.split(',');
// Imprima a mensagem de processamento inicial
print('Processing employee list: $input');
print('===========================================');
// TODO: Escreva seu código abaixo
// Use forEach com funções anônimas para:
// 1. Imprimir mensagens de boas-vindas
// 2. Imprimir nomes em letras maiúsculas
// 3. Imprimir o comprimento dos nomes
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos