Iterables en Dart: Explorando Métodos y Funcionalidades

  Correcto

En Dart, un Iterable es una colección de elementos que se puede recorrer de manera secuencial. Permite trabajar con datos de forma eficiente utilizando la programación funcional. Los iterators son objetos que permiten recorrer los elementos de un iterable, facilitando la manipulación y transformación de datos.

Los iterables en Dart son herramientas poderosas para manipular colecciones de datos. Con métodos como where(), map(), y reduce(), se puede transformar y combinar datos de manera concisa y eficiente, facilitando la escritura de código limpio y legible.

Iterable

Un Iterable es una colección que proporciona un método iterator, que devuelve un objeto Iterator para recorrer sus elementos.

dart
var numeros = [1, 2, 3, 4, 5];
Iterable<int> iterableNumeros = numeros;

for (var numero in iterableNumeros) {
  print(numero); 
  // Imprime los números del 1 al 5
}

Iterator

Un *Iterator es un objeto que permite acceder a los elementos de un iterable uno a uno, utilizando los métodos moveNext() y current.

dart
var iterator = numeros.iterator;

while (iterator.moveNext()) {
  print(iterator.current);
  // Imprime los números del 1 al 5
}

Método where()

El método where() filtra los elementos de un iterable basado en una condición específica, devolviendo un nuevo iterable que contiene solo los elementos que cumplen con la condición.

dart
var numerosPares = numeros.where((numero) => numero.isEven);
print(numerosPares.toList()); 
// Resultado: [2, 4]

Método map()

El método map() aplica una función a cada elemento de un iterable y devuelve un nuevo iterable con los resultados.

dart
var cuadrados = numeros.map((numero) => numero * numero);
print(cuadrados.toList()); 
// Resultado: [1, 4, 9, 16, 25]

Método reduce()

El método reduce() aplica una función acumulativa a los elementos de un iterable, reduciéndolos a un solo valor. Es útil para sumar, multiplicar o combinar elementos.

dart
var sumaTotal = numeros.reduce((acumulador, numero) => acumulador + numero);
print(sumaTotal); 
// Resultado: 15