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:
- Generador Síncrono : Devuelve un objeto iterable .
- 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