Flussi di dardo

Flussi di dardo
Un flusso nel linguaggio di programmazione Dart è definito come una serie di eventi asincroni. È praticamente simile alla struttura dei dati iteblemate. Tuttavia, la principale differenza tra un flusso e un iterabile è che nel caso di quest'ultimo, è necessario chiedere manualmente i prossimi eventi, mentre, nel caso di quello precedente, il flusso stesso continua a dirti che il prossimo L'evento è pronto. Questo processo continua fino a quando non sono rimasti più eventi nel flusso da leggere. I flussi Dart assomigliano anche a tubi in cui si inseriscono un valore da un'estremità e questo valore viene letto dal ricevitore all'altra estremità. In questo tutorial, impareremo l'uso di base dei flussi nel linguaggio di programmazione Dart in Ubuntu 20.04.

Come utilizzare i flussi nel linguaggio di programmazione Dart in Ubuntu 20.04?

Per utilizzare i flussi nel linguaggio di programmazione DART in modo efficace, è necessario comprendere i seguenti due esempi che sono stati implementati su un Ubuntu 20.04 Sistema:

Esempio n. 1: creazione di un flusso di dardo per calcolare la somma di più numeri interi

In questo esempio, creeremo un flusso di dardo che continuerà a leggere i numeri interi fino a quando non esistono e non appena ne legge uno nuovo, lo aggiungerà a quelli esistenti. Questo processo proseguirà fino a quando non rimarranno ulteriori numeri interi, dopodiché sarai in grado di ottenere la somma di tutti questi numeri interi. Sarai in grado di capirlo chiaramente passando attraverso lo script Dart mostrato nell'immagine qui sotto:

In questo esempio, abbiamo creato per la prima volta un tipo intero "futuro", i.e., è in grado di restituire un valore intero che è "somma" in questo caso. Abbiamo nominato questo futuro "Sumstream."Questo è in grado di accettare un flusso di numeri interi. Quindi, abbiamo anche usato la parola chiave "Async" mentre definiamo questo futuro. Questa parola chiave viene utilizzata ogni volta che si desidera utilizzare il loop "attesa per" all'interno di uno script. In questo futuro, abbiamo creato una variabile denominata "somma" e la inizializzata con "0" in modo che non contenga alcun valore della spazzatura.

Quindi, abbiamo utilizzato il ciclo "Abved for". Questo ciclo continuerà a funzionare fintanto che ci sono più elementi all'interno del nostro flusso intero. Questo ciclo fondamentalmente si ipotizza sul flusso intero che è stato passato al nostro futuro. All'interno di questo ciclo, stiamo calcolando la somma di tutti i valori del flusso intero. Questo ciclo si romperà quando non sono rimasti ulteriori elementi all'interno del flusso, dopo di che questo futuro restituirà la "somma" alla funzione "main ()".

Quindi, abbiamo dichiarato la funzione "main ()" con il tipo di ritorno "futuro" e abbiamo anche usato la parola chiave "asincroni" con la sua dichiarazione. Successivamente, abbiamo dichiarato e inizializzato un flusso di quattro diversi numeri interi all'interno della nostra funzione del driver. Quindi, abbiamo creato una variabile "somma" per mantenere il risultato del futuro "sumstream". Abbiamo chiamato questo futuro con la parola chiave "attesa" mentre passano il flusso intero ad esso. Infine, abbiamo usato una dichiarazione "stampa" per stampare il risultato di questo script, i.e., La somma del flusso intero sul terminale.

Per l'esecuzione di questo script Dart, abbiamo utilizzato il comando successivo:

$ dart run flussi.dardo

L'output della nostra sceneggiatura Dart, i.e., La somma del nostro flusso intero è mostrata nell'immagine qui sotto:

Esempio n. 2: creazione di un flusso di dardo per calcolare il prodotto di più numeri interi

In questo esempio, vogliamo creare un flusso DART per calcolare il prodotto di più numeri interi. Questo esempio è praticamente simile al nostro primo esempio in termini di utilizzo dei flussi DART; Tuttavia, la sua logica principale, io.e., Il calcolo del prodotto differirà dal primo esempio. Il seguente script Dart spiega questa funzionalità:

Nel nostro secondo esempio, abbiamo dichiarato un futuro dardo con il tipo di ritorno intero. Abbiamo nominato questo futuro "Productstream" e questo futuro prenderà un flusso intero come input. Ancora una volta, abbiamo usato la parola chiave "Async" poiché useremo il loop "Attesa per" nel nostro futuro. All'interno di questo futuro, abbiamo dichiarato una variabile denominata "Prodotto" e abbiamo assegnato il valore "1". Questa volta, non abbiamo inizializzato questa variabile con "0" come abbiamo fatto nel caso della somma. È così perché moltiplicando qualsiasi numero con "0" riduce l'intero output a "0". Questo è esattamente il motivo per cui dobbiamo mantenere il valore di questa variabile "1" se desideriamo moltiplicare gli elementi del flusso intero.

Quindi, abbiamo usato un loop "attesa per" che itera sul flusso intero che è stato passato a questo futuro. All'interno di questo ciclo, stiamo calcolando il prodotto di tutti gli elementi del nostro flusso intero. Questi elementi vengono letti uno per uno e il valore della variabile "prodotto" viene aggiornato. Infine, quando sono stati letti tutti gli elementi del flusso intero, questo futuro restituirà il prodotto di tutti questi numeri interi alla funzione "main ()".

Quindi, nella nostra funzione "main ()", abbiamo dichiarato un flusso di tre numeri interi. Successivamente, abbiamo creato una variabile "prodotto" per mantenere il risultato del nostro futuro "Productstream". Ora abbiamo stampato il risultato della variabile "Prodotto" sul terminale.

L'immagine mostrata di seguito mostra l'output del nostro futuro "Productstream", i.e., Il prodotto di tutti gli elementi del nostro flusso intero.

Conclusione

Questo articolo è stato progettato per condividere con te un concetto relativamente nuovo associato al linguaggio di programmazione Dart, i.e., Flussi di dardo. Per rendere questo concetto comprensibile per te, abbiamo implementato due semplici esempi in Ubuntu 20.04 e li hanno spiegati entrambi in profondità. Dopo aver attraversato questi due esempi, sarai in grado di cogliere molto bene il concetto di flussi nel linguaggio di programmazione Dart.