En Dart, los métodos map y fold permiten transformar y reducir colecciones de forma eficiente. Estos métodos facilitan el trabajo con listas y otros tipos de colecciones al aplicar funciones específicas a cada elemento y condensar los resultados en un solo valor.
map en Dart?
El método map transforma cada elemento de una colección según una función proporcionada y devuelve una nueva colección con los elementos modificados. map es útil para convertir datos sin modificar la colección original.
map
En el siguiente ejemplo, se usa map para multiplicar cada elemento de una lista por 2:
void main() {
var numeros = [1, 2, 3, 4];
var numerosDuplicados = numeros.map((numero) => numero * 2).toList();
print(numerosDuplicados); // Salida: [2, 4, 6, 8]
}
En este caso, map aplica la función (numero) => numero * 2 a cada elemento de numeros, generando una nueva lista numerosDuplicados con los valores transformados.
fold en Dart?
El método fold reduce una colección a un solo valor acumulando sus elementos de acuerdo con una función específica. fold requiere un valor inicial y una función que combine el valor acumulado con cada elemento de la colección.
fold
En el siguiente ejemplo, se utiliza fold para calcular la suma de todos los elementos de una lista:
void main() {
var numeros = [1, 2, 3, 4];
var suma = numeros.fold(0, (acumulador, numero) => acumulador + numero);
print(suma); // Salida: 10
}
Aquí, fold comienza con 0 como valor inicial y luego acumula cada elemento de la lista numeros, sumándolos para obtener un resultado final de 10.
map y fold
Los métodos map y fold se pueden combinar para realizar transformaciones y luego acumular los resultados en una sola operación.
map y fold combinados
En este ejemplo, se transforma cada elemento para duplicar su valor y luego se suman los resultados:
void main() {
var numeros = [1, 2, 3, 4];
var sumaDuplicados = numeros.map((numero) => numero * 2).fold(0, (acumulador, numero) => acumulador + numero);
print(sumaDuplicados); // Salida: 20
}
Aquí, cada elemento se duplica primero con map, y luego fold acumula los valores en una suma total.
Para más información sobre el uso de map y fold en Dart, consulta la documentación oficial de Dart.
Jorge García
Fullstack developer