Corrientes de dardos

Corrientes de dardos
Una transmisión en el lenguaje de programación DART se define como una serie de eventos asíncronos. Es más o menos como la estructura de datos iterable. Sin embargo, la principal diferencia entre una transmisión y una iterable es que en el caso de este último, debe solicitar manualmente los próximos eventos, mientras que, en el caso de la primera, la transmisión en sí sigue diciéndole que la próxima El evento está listo. Este proceso continúa hasta que no quedan más eventos en la transmisión para leer. Las transmisiones de dardos también se parecen a las tuberías en las que inserta un valor de un extremo, y el receptor lee este valor en el otro extremo. En este tutorial, aprenderemos el uso básico de las transmisiones en el lenguaje de programación DART en Ubuntu 20.04.

Cómo usar las transmisiones en el lenguaje de programación DART en Ubuntu 20.04?

Para usar las transmisiones en el lenguaje de programación DART de manera efectiva, debe comprender los siguientes dos ejemplos que se han implementado en un Ubuntu 20.04 Sistema:

Ejemplo # 1: Creación de una secuencia de dardos para calcular la suma de múltiples enteros

En este ejemplo, crearemos una transmisión de dardos que seguirá leyendo enteros hasta que existan, y tan pronto como se lea uno nuevo, lo agregará a los existentes. Este proceso continuará hasta que no queden más enteros, después de lo cual podrá obtener la suma de todos estos enteros. Podrá entenderlo claramente revisando el script de dardos que se muestra en la imagen a continuación:

En este ejemplo, primero hemos creado un tipo entero "futuro", yo.mi., Es capaz de devolver un valor entero que es "suma" en este caso. Hemos nombrado este futuro "Sumstream."Esto es capaz de aceptar una corriente de enteros. Luego, también hemos utilizado la palabra clave "async" mientras definimos este futuro. Esta palabra clave se usa siempre que desee usar el bucle "espera para" dentro de un script. Dentro de este futuro, hemos creado una variable llamada "suma" y la inicializamos con "0" para que no contenga ningún valor de basura.

Luego, hemos hecho uso del bucle "esperar por". Este bucle seguirá funcionando mientras haya más elementos dentro de nuestra transmisión entera. Este bucle básicamente itera sobre la transmisión entera que se ha pasado a nuestro futuro. Dentro de este bucle, estamos calculando la suma de todos los valores de la transmisión entera. Este bucle se romperá cuando no queden más elementos dentro de la transmisión, después de lo cual este futuro devolverá la "suma" a la función "main ()".

Luego, hemos declarado la función "main ()" que tiene el tipo de retorno "futuro" y también hemos utilizado la palabra clave "async" con su declaración. Después de eso, hemos declarado e inicializado un flujo de cuatro enteros diferentes dentro de nuestra función de controlador. Luego, hemos creado una variable de "suma" para mantener el resultado del futuro "sumstream". Hemos llamado a este futuro con la palabra clave "esperar" mientras le pasamos la transmisión entera. Finalmente, hemos utilizado una declaración de "impresión" para imprimir el resultado de este script, yo.mi., la suma de la corriente entera en la terminal.

Para la ejecución de este script de dardo, hemos utilizado el comando posterior:

$ DART Run Streams.dardo

La salida de nuestro script de dardo, yo.mi., La suma de nuestra transmisión entera se muestra en la imagen a continuación:

Ejemplo # 2: Creación de un flujo de dardos para calcular el producto de múltiples enteros

En este ejemplo, queremos crear un flujo de dardos para calcular el producto de múltiples enteros. Este ejemplo es bastante similar a nuestro primer ejemplo en términos del uso de las transmisiones de dardos; Sin embargo, su lógica principal, yo.mi., El cálculo del producto, diferirá del primer ejemplo. El siguiente script Dart explica esta funcionalidad:

En nuestro segundo ejemplo, hemos declarado un futuro de Dart con el tipo de retorno de entero. Hemos nombrado este futuro "Productream", y este futuro tomará un flujo entero como entrada. Nuevamente, hemos usado la palabra clave "async" ya que usaremos el bucle "esperar para" en nuestro futuro. Dentro de este futuro, hemos declarado una variable llamada "producto" y hemos asignado el valor "1". Esta vez, no hemos inicializado esta variable con "0" como lo hicimos en el caso de la suma. Es así porque multiplicar cualquier número con "0" reduce la salida completa a "0". Esta es exactamente la razón por la que necesitamos mantener el valor de esta variable "1" si deseamos multiplicar los elementos de la corriente entera.

Luego, hemos utilizado un bucle "espera para" que itera sobre la corriente entera que se ha pasado a este futuro. Dentro de este bucle, estamos calculando el producto de todos los elementos de nuestra transmisión entera. Estos elementos se leen uno por uno, y el valor de la variable "producto" se actualiza. Finalmente, cuando se hayan leído todos los elementos de la transmisión entera, este futuro devolverá el producto de todos estos enteros a la función "principal ()".

Luego, en nuestra función "main ()", hemos declarado un flujo de tres enteros. Después de eso, hemos creado una variable de "producto" para mantener el resultado de nuestro futuro "Productream". Ahora, hemos impreso el resultado de la variable "producto" en el terminal.

La imagen que se muestra a continuación muestra la salida de nuestro futuro "Productream", yo.mi., El producto de todos los elementos de nuestra transmisión entera.

Conclusión

Este artículo fue diseñado para compartir con usted un concepto relativamente nuevo asociado con el lenguaje de programación DART, yo.mi., Corrientes de dardos. Para que este concepto sea comprensible para usted, hemos implementado dos ejemplos simples en Ubuntu 20.04 y los he explicado a ambos en profundidad. Después de pasar por estos dos ejemplos, podrá comprender muy bien el concepto de transmisiones en el lenguaje de programación DART.