Funciones anónimas
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 44 de 65.
Hasta ahora, has estado creando funciones con nombres como calculateTotal o printMessage. Pero a veces necesitas una función simple para una sola tarea específica, y darle un nombre parece innecesario. Aquí es donde las funciones anónimas resultan útiles.
Una función anónima es una función sin nombre. La defines justo donde la necesitas, haciendo que tu código sea más conciso para operaciones cortas y de un solo uso. La sintaxis es sencilla: simplemente escribes la lista de parámetros seguida del cuerpo de la función:
(parameter) {
// cuerpo de la función
}Las funciones anónimas son particularmente útiles con los métodos de lista. Por ejemplo, en lugar de crear una función con nombre separada para imprimir cada elemento de una lista, puedes usar una función anónima directamente con el método forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Este enfoque mantiene tu código limpio y enfocado, especialmente cuando la lógica de la función es simple y no se reutilizará en ningún otro lugar de tu programa.
Desafío
FácilCrea un programa que procese una lista de nombres de empleados utilizando funciones anónimas. Tu programa demostrará cómo usar funciones anónimas con el método forEach para realizar diferentes operaciones en cada elemento de la lista.
- Lee una cadena de entrada que contenga nombres de empleados separados por comas (por ejemplo,
"Alice,Bob,Charlie,Diana") - Divide la cadena de entrada en una lista de nombres individuales utilizando el método
split() - Utiliza el método
forEachcon una función anónima para imprimir cada nombre de empleado con un mensaje de bienvenida - Utiliza el método
forEachcon otra función anónima para imprimir cada nombre de empleado en mayúsculas - Utiliza el método
forEachcon una tercera función anónima para imprimir cada nombre de empleado junto con su recuento de caracteres
Por ejemplo, si la entrada es "Alice,Bob,Charlie", tu programa debería mostrar:
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 charactersSi la entrada es "John,Sarah", tu programa debería mostrar:
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 charactersTu programa debe utilizar tres llamadas separadas al método forEach, cada una con su propia función anónima. Las funciones anónimas deben definirse en línea sin darles nombres. Cada función anónima debe tomar un único parámetro que represente el nombre del empleado actual y realizar la operación especificada. Utiliza la interpolación de cadenas para formatear los mensajes de salida exactamente como se muestra arriba.
Hoja de referencia
Una función anónima es una función sin nombre, definida justo donde la necesitas. La sintaxis utiliza una lista de parámetros seguida del cuerpo de la función:
(parameter) {
// cuerpo de la función
}Las funciones anónimas son particularmente útiles con métodos de lista como forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Este enfoque mantiene el código limpio y enfocado para operaciones simples y únicas que no se reutilizarán en otros lugares.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer la cadena de entrada que contiene los nombres de los empleados
String? input = stdin.readLineSync();
// Dividir la entrada en una lista de nombres
List<String> employeeNames = input!.split(',');
// Imprimir el mensaje de procesamiento inicial
print('Processing employee list: $input');
print('===========================================');
// TODO: Escribe tu código a continuación
// Usa forEach con funciones anónimas para:
// 1. Imprimir mensajes de bienvenida
// 2. Imprimir nombres en mayúsculas
// 3. Imprimir la longitud de los nombres
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única