Dart: conceptos avanzados de colecciones iterables

En este artículo, analizaremos algunos de los conceptos importantes relacionados con iterables en Dart. 

1. La indexación con el operador [ ] no es válida:

En dart, no hay operador [] en Iterable. Para entender mejor, echemos un vistazo al siguiente ejemplo.

Ejemplo:

Dart

void main() {
    
  // invalid program
  Iterable<int> iterable = [1, 2, 3, 4, 5 ]; // line 1
int value = iterable[1]; // line 2
}

Producción: 

En este ejemplo, tenemos una lista de 5 elementos. ¿Qué pasa si queremos obtener el número del índice particular? En la línea 2 intentamos obtener números del índice escribiendo iterable[1] pero el operador [ ] no está definido en la clase. Como puede ver, el error anterior que obtuvimos.

Entonces surge la pregunta: ¿cómo obtenemos el número de un índice particular en dart? Para hacer eso usamos elementAt() en dart. 

Sintaxis:

elementAt(index_number)

Aquí,

  • index_number: Es el índice cuyo valor se va a buscar.

Eche un vistazo al siguiente ejemplo.

Ejemplo: 

Aquí queremos obtener el valor en el índice 3. Así que veamos cómo podemos hacerlo con la ayuda de elementAt().

Dart

void main() {
 Iterable<int> iterable = [1, 2, 3, 4, 5];
 print('Element at 3rd index is ${iterable.elementAt(3)}');
}

Producción:

Explicación: aquí pasamos el índice n.º 3 porque queríamos que el valor se almacenara en ese índice. Entonces obtuvimos el resultado 4. Así es como podemos obtener el valor almacenado en un índice particular usando elementAt().

2. Mapeo Iterable

Podemos mapear un iterable existente y derivar valores modificados. Para hacerlo, siga los siguientes pasos:

  • tomar una colección
  • Transforma todos sus elementos según una condición.
  • Devolver una nueva colección

Ejemplo: 

Dart

void main() {
  const list = [5,4,3,2,1];
  final value = list.map((number) => number*2);
  print('new values are: ${value}');
}

Producción:

¿Qué hace que los operadores de mapas sean muy poderosos en dart?

Es la capacidad de transformar el proceso en una pieza de código muy pequeña. Veamos un ejemplo.

El mismo código anterior si escribimos usando for loop, entonces podemos ver a continuación, ya que requiere muchas líneas de código. 

Dart

void main() {
   const list = [5,4,3,2,1];
    
  final element = [];
  for(var value in list){
    element.add(value * 2);
  }
  print('new values are: ${element}');
}

 Producción :

new values are: [10, 8, 6, 4, 2]

Vemos que aunque la salida es la misma, las líneas de código son más. Es por eso que un mapa es poderoso porque al usarlo podemos escribir código en menos líneas y obtener el resultado deseado.

Nota IMPORTANTE:

Según los documentos oficiales, el mapa devuelve iterable perezoso.

¿Qué significa iterable perezoso

Echemos un vistazo al siguiente código:

Dart

void main() {
  
 const list = [5,4,3,2,1];
  
 final value = list.map((number) => number*2);
  
 print('new values are: ${value}');
}

Aquí, la función anónima no se evalúa hasta que se usa el resultado. 

Esto significa:

  • Significa que el mapa no evaluará la función anónima si el resultado no se imprime o no se usa en ninguna parte.
  • Es una técnica de optimización del rendimiento que garantiza que todos los elementos resultantes solo se calculen cuando sea necesario.

Publicación traducida automáticamente

Artículo escrito por ayurishchandnacs18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *