Scala flussi

Scala flussi
Scala deve facilitare operazioni pigre. Poiché tutti i calcoli su queste raccolte sono differiti, non sono rigorosamente definiti. Esploreremo i flussi Scala che sono i tipi unici di elenchi in questo articolo sui flussi in Scala. La raccolta Scala che memorizza i dati include anche il flusso Scala. L'unica differenza che lo separa da un elenco in Scala è quando è necessario per la scala quando vengono calcolati i valori del flusso. Poiché non caricano i dati tutti in una volta, i flussi Scala sono elenchi pigri che valutano solo i valori necessari. Questo migliora le prestazioni del programma.

Sintassi del flusso in Scala in Ubuntu 20.04

La differenza principale tra un flusso di scala e un elenco è che gli elementi di un flusso vengono calcolati lentamente piuttosto che tutti in una volta. La nostra applicazione funziona più velocemente poiché vengono calcolati solo gli elementi che richiediamo. Il flusso di Scala, tuttavia, è veloce.

Val Stream = 1 #:: 2 #:: 3 #:: Stream.vuoto

Un flusso può essere creato utilizzando l'approccio #:: operatore e lo streaming.vuoto alla fine dell'espressione rispetto a un elenco in Scala che può essere creato con l'operatore :: Stream.vuoto. Un flusso di numeri è dato come specifica del flusso. In questo caso, 1 rappresenta la testa del flusso. Mentre 2 e 3 rappresentano la coda del flusso. I comandi di Take come quelli di seguito possono essere utilizzati per recuperare i valori:

flusso.Prendi (valore)

Esempio 1: creazione di un flusso in Scala

Gli esempi per la creazione di un flusso in Scala sono riportati nelle seguenti illustrazioni. Gli elementi in un flusso vengono mantenuti dopo essere stati valutati.

Abbiamo costruito l'oggetto come "Stream1". Contiene la definizione del metodo principale all'interno del blocco del metodo principale. Abbiamo realizzato il codice Scala Stream. Per questo, abbiamo prima dichiarato la variabile della parola chiave "Val" come "Mystream". La variabile "mystream" è impostata con un flusso di tre numeri. Abbiamo usato 2, 4 e 10 come numeri interi per il flusso. Qui, 2 viene indicato come la testa e i prossimi due numeri interi, 4 e 10, sono indicati come la coda del flusso. Abbiamo utilizzato l'operatore "#" e risoluzione di portata "::" tra i numeri interi tra i numeri interi. Il flusso.vuoto è impiegato alla fine del flusso. Quindi, abbiamo chiamato la variabile "mystream" all'interno della funzione println per stampare il flusso specificato.

I risultati mostrano che la seconda parte non è stata valutata. In questo caso, l'elemento viene sostituito con un punto interrogativo. Gli elenchi non sono valutati da Scala fino a quando non sono richiesti. La coda non è stampata in quanto non è stata ancora calcolata. I flussi sono designati per il calcolo pigro.

Esempio 2: creazione di un flusso con il flusso.Pacchetto contro in scala

Flusso.i contro possono anche essere utilizzati per creare un flusso. Per generare flussi, utilizzare il pacchetto importare “Scala.collezione.immutabile.Flusso.contro ".

Abbiamo menzionato il pacchetto Scala “Scala.collezione.immutabile.Flussi.Contro "nella nostra sezione intestazione. Successivamente, abbiamo creato un oggetto come "Stream2". La definizione del metodo principale è fornita per questo oggetto. Abbiamo creato la variabile "s" con l'aiuto della parola chiave "val". Abbiamo assegnato il flusso [int] alla variabile "s". Quindi, abbiamo chiamato i contro del flusso. Ogni contro del flusso è racchiuso all'interno dell'altro. Alla fine, abbiamo usato il flusso.vuoto negli ultimi contro. Quindi, abbiamo il metodo println per stampare il flusso.Contro Elements. Abbiamo utilizzato l'interpolazione della stringa "$ s" per stampare gli elementi del flusso.

Il flusso immutabile viene generato nella seguente schermata di uscita. Si ottengono solo gli elementi della testa del flusso e la coda non viene valutata:

Esempio 3: Utilizzo della funzione Prendi sullo streaming in Scala

Per estrarre gli elementi da un flusso, usa la funzione.

Abbiamo stabilito l'oggetto "stream3" e designato il metodo principale per questo. Il metodo principale contiene la dichiarazione variabile e l'istruzione di stampa da visualizzare. La variabile viene dichiarata qui come "ST" e inizializzata con il flusso di tre numeri dispari. Il flusso viene creato con l'operatore "#::" e il flusso.vuoto alla fine del flusso.

Dopo la creazione del flusso, l'abbiamo visualizzato con la funzione di stampa. Quindi, abbiamo preso i primi due elementi dal flusso dato passando il valore "2" nella ST.Prendi () metodo. Successivamente, abbiamo ottenuto i primi cinque elementi dal flusso passando il metodo "5" nel flusso ().

Nella prima valutazione del flusso, si ottiene un solo elemento. Dopo aver usato il comando Stream Take, abbiamo recuperato i primi due elementi dal flusso. Inoltre, abbiamo preso i primi cinque elementi dal flusso. Poiché solo tre elementi vengono forniti al flusso, quindi si accede solo tre nell'ultimo output. Si noti che non viene lanciato alcun errore.

Esempio 4: usando la mappa sul flusso in Scala

Utilizziamo la funzione mappa su un flusso in un programma Scala. Le operazioni di flusso vengono eseguite utilizzando la funzione mappa.

Abbiamo un oggetto "stream4" in cui viene chiamata la definizione principale del programma. All'interno della funzione principale "Stream4" dell'oggetto, abbiamo definito una variabile "flusso". Qui, abbiamo creato il flusso con l'operatore "#::". Il flusso.vuoto viene usato alla fine dell'espressione del flusso. Il flusso creato viene stampato passando la variabile "flusso" alla funzione println. Successivamente, abbiamo chiamato la funzione mappa all'interno di un'altra funzione println. Abbiamo trasformato il flusso di input con il nuovo flusso con l'aiuto della funzione della mappa.

Il primo output ottenuto è il vapore e quello successivo è il nuovo flusso di mappe del flusso precedente.

Esempio 5: inizializzazione di un flusso vuoto in Scala

Un flusso vuoto può essere inizializzato utilizzando il seguente codice:

All'interno dell'oggetto "Stream5", abbiamo classificato il metodo principale. Nel metodo principale, abbiamo creato la variabile "s_empty" e impostato il flusso vuoto. Quindi, abbiamo visualizzato il flusso vuoto utilizzando il metodo println e abbiamo superato la variabile "s_empty" ad esso.

L'output mostra che il flusso è vuoto. Inoltre, visualizza il flusso vuoto ma non lancia alcun tipo di eccezione.

Conclusione

Questo è un manuale di riferimento Scala Stream. Qui, abbiamo esaminato come creare la funzione di flussi in Scala usando gli esempi di programmazione appropriati. Non abbiamo calcolato il valore di un elemento tutto in una volta in Scala Stream ma piuttosto uno alla volta. Quando le prestazioni sono un problema, usa questo. Quando si tratta di acquisire un elemento di flusso, utilizza il metodo più recente. Poiché una sola voce viene calcolata alla volta, il flusso utilizza meno memoria rispetto all'elenco.