En Dart, los iterables son una colección de elementos que se pueden recorrer uno por uno. Los iterables son fundamentales para trabajar con colecciones de datos, ya que proporcionan una manera eficiente de acceder y manipular elementos de una colección.

Conceptos Clave

  1. Iterable: Es una colección que puede ser recorrida. En Dart, Iterable es una clase abstracta que proporciona una interfaz para iterar sobre una colección.
  2. Iterator: Es un objeto que permite recorrer los elementos de un iterable. La clase Iterator tiene dos métodos principales:
    • moveNext(): Mueve el iterador al siguiente elemento de la colección.
    • current: Devuelve el elemento actual del iterador.

Ejemplo Básico de Iterable

A continuación, se muestra un ejemplo básico de cómo usar un iterable en Dart:

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  
  // Usando un bucle for-in para iterar sobre la lista
  for (int number in numbers) {
    print(number);
  }
}

Explicación del Código

  • List numbers = [1, 2, 3, 4, 5];: Creamos una lista de enteros.
  • for (int number in numbers): Utilizamos un bucle for-in para iterar sobre cada elemento de la lista.
  • print(number);: Imprimimos cada número en la consola.

Métodos Comunes de Iterable

Dart proporciona varios métodos útiles para trabajar con iterables. Aquí hay algunos de los más comunes:

Método Descripción
forEach Ejecuta una función para cada elemento del iterable.
map Aplica una función a cada elemento y devuelve un nuevo iterable con los resultados.
where Filtra los elementos que cumplen con una condición específica.
reduce Combina todos los elementos en un solo valor usando una función acumuladora.
toList Convierte el iterable en una lista.
toSet Convierte el iterable en un conjunto.

Ejemplo de Uso de Métodos Comunes

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  
  // forEach
  numbers.forEach((number) => print(number));
  
  // map
  Iterable<int> squaredNumbers = numbers.map((number) => number * number);
  print(squaredNumbers.toList());
  
  // where
  Iterable<int> evenNumbers = numbers.where((number) => number.isEven);
  print(evenNumbers.toList());
  
  // reduce
  int sum = numbers.reduce((a, b) => a + b);
  print(sum);
}

Explicación del Código

  • forEach: Imprime cada número en la lista.
  • map: Crea un nuevo iterable con los números al cuadrado y lo convierte en una lista.
  • where: Filtra los números pares y los convierte en una lista.
  • reduce: Suma todos los números de la lista.

Ejercicio Práctico

Ejercicio 1: Filtrar y Transformar una Lista

Dada una lista de números, filtra los números impares y luego multiplica cada número impar por 2. Imprime el resultado.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  
  // Tu código aquí
}

Solución

void main() {
  List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  
  Iterable<int> oddNumbers = numbers.where((number) => number.isOdd);
  Iterable<int> transformedNumbers = oddNumbers.map((number) => number * 2);
  
  print(transformedNumbers.toList());
}

Explicación de la Solución

  • where: Filtra los números impares.
  • map: Multiplica cada número impar por 2.
  • toList: Convierte el iterable resultante en una lista y la imprime.

Conclusión

En esta sección, hemos aprendido sobre los iterables en Dart, cómo utilizarlos y algunos de los métodos más comunes que podemos aplicar a los iterables. Los iterables son una herramienta poderosa para trabajar con colecciones de datos y proporcionan una manera flexible y eficiente de manipular y acceder a los elementos de una colección.

En el próximo módulo, profundizaremos en la Programación Orientada a Objetos en Dart, donde aprenderemos sobre clases, objetos, herencia y más.

© Copyright 2024. Todos los derechos reservados