Generadores en Dart

Los generadores en Dart le permiten al usuario producir una secuencia de valor fácilmente. Se puede generar una secuencia de valores en dart con la ayuda de dos funciones generadoras:

  1. Generador Síncrono : Devuelve un objeto iterable .
  2. Generador asíncrono : Devuelve un objeto Stream .

Generador Síncrono en Dart

El generador síncrono devuelve un objeto iterable, es decir, devuelve la colección de valores, o «elementos», a los que se puede acceder secuencialmente. Para implementar la función de generador síncrono , marque el cuerpo de la función como sync* y use declaraciones de rendimiento para entregar valores.

Ejemplo: Implementación de un generador síncrono en Dart.

Dart

// sync* functions return an iterable
Iterable geeksForGeeks(int number) sync* {
  int geek = number;
  while (geek >= 0) {
      
    // Checking for even number
    if (geek % 2 == 0) {
        
      // 'yield' suspends
      // the function
      yield geek;
        
    }
      
    // Decreasing the
    // variable geek
    geek--;
  }
}
  
// Main Function
void main() 
{ 
  print("------- Geeks For Geeks --------");
    
  print("Dart Synchronous Generator Example For Printing Even Numbers From 10 In
        Reverse Order:");
    
  // Printing positive even numbers
  // from 10 in reverse order
  geeksForGeeks(10).forEach(print);
}

Producción:

--------------------- Geeks For Geeks ---------------------
Dart Synchronous Generator Example For Printing Even Numbers From 10 In Reverse Order:
10
8
6
4
2
0

Generador asíncrono en Dart

El generador asíncrono devuelve un objeto de flujo. Un flujo proporciona una forma de recibir una secuencia de eventos. Cada evento es un evento de datos, también llamado elemento de la secuencia, o un evento de error, que es una notificación de que algo ha fallado. Para implementar una función de generador asíncrono , marque el cuerpo de la función como async* y use declaraciones de rendimiento para entregar valores.

Ejemplo: Implementación de un generador asíncrono en Dart.

Dart

// async* function(s) return an stream
Stream geeksForGeeks(int number) async* {
  int geek = 0;
    
  // Checking for every
  // geek less than number
  while (geek <= number) yield geek++;
  // Incrementing geek
  // after printing it
}
  
// Main Function
void main() 
{ 
  print("-------- Geeks For Geeks -----------");
    
  print("Dart Asynchronous Generator Example For Printing Numbers Less Than 10:");
    
  // Printing numbers less
  // than or equal to 10
  geeksForGeeks(10).forEach(print);
}

 

Producción:

--------------------- Geeks For Geeks ---------------------
Dart Asynchronous Generator Example For Printing Numbers Less Than 10:
0
1
2
3
4
5
6
7
8
9
10

Publicación traducida automáticamente

Artículo escrito por aditya_taparia 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 *