Scala per la comprensione

Scala per la comprensione
Per iterare attraverso le raccolte nei linguaggi di programmazione, utilizziamo i loop come il per loop e loop. Un tipo unico di loop chiamato percprensione è introdotto dal linguaggio di programmazione Scala. Il costrutto, come molti altri in Scala, è un discendente diretto di Haskell. Può essere usato per molto più che semplicemente loop attraverso le collezioni. Quando si utilizza un modo di programmazione funzionale, ci aiuta a gestire la complessità della sintassi.

Cos'è la comprensione in Scala in Ubuntu 20.04

Il formato per (enumeratori) fornisce "e" nelle comprensioni in cui gli enumeratori sono un elenco di enumeratori che è separato da punti e virgola. Un generatore che aggiunge nuove variabili è un enumeratore, mentre un filtro è un enumeratore. Ogni legame creato dagli enumeratori viene valutato da una comprensione, che quindi emette una sequenza di valori per ciascun valore.

Sintassi di percprensione in Scala
Siamo diretti da queste definizioni ai concetti di definizioni, filtri e generatori per la comprensione. Una scale per la completezza include le seguenti tre espressioni:

per
e <- elements // generator
n = d.Nome // Definizione
if (espressione) // filtro
prodotto

Generatori
I generatori sono come iteratori che iterano su tutti gli elementi. Ecco altri due fatti riguardanti i generatori: (1) Un generatore è il primo passo in ogni comprensione, (2) vengono utilizzati più generatori per la comprensione.

Filtri
I filtri assumono la forma di condizioni booleane all'interno di una completezza. Un filtro funge da guardia, impedendo a tutti i valori di essere utilizzati che violano la condizione booleana. Ogni variabile accessibile all'interno dell'ambito della percprensione può essere utilizzata per creare una condizione booleana personalizzata all'interno di un filtro.

Definizioni
La definizione è qualcosa che usiamo per spiegare esattamente cosa desideriamo realizzare o fare. Ad esempio, possiamo includere tutte le operazioni che desideriamo svolgere nella parte distintiva.

Esempio 1: Utilizzo della compensazione per i rendimenti

Per costruire una nuova collezione da una collezione esistente, combina il loop, il tuo algoritmo e una dichiarazione di rendimento. Una compensa è l'applicazione di un loop con un'istruzione di rendimento. Metti il ​​lavoro in un blocco seguendo la parola chiave di rendimento se il tuo approccio richiede numerose righe di codice:

Abbiamo creato l'oggetto come "demo1" in cui abbiamo una definizione della funzione principale. All'interno di ciò, abbiamo costruito il caso "soggetto". La classe ha due attributi: il "nome" set su tipo di stringa e il "articolo" assegnato al tipo "int". Dopo questo, abbiamo dichiarato una "materia" variabile che ha la rappresentazione dell'elenco. L'elenco è inizializzato con il nome dei tre soggetti e numeri di articolo, rispettivamente.

Successivamente, abbiamo definito il generatore, la definizione e il filtraggio all'interno della compensa che è impostata nella variabile "MoreTanten". All'interno della comparensione, il "soggetto" ha pedalato su ciascun elemento all'interno della "materia". Quindi, abbiamo un'istruzione "if" che indica il filtro qui. L'affermazione "if" che ha il "soggetto.Articolo> = 10 && soggetto.articolo< 20 ” condition means that the article that doesn't seem to be between 10 and 20 is filtered away.

Sotto la completa per la completezza, abbiamo utilizzato la parola chiave "resa" che aggiunge l'argomento.nome. Dal soggetto.Il nome è una stringa, l'operatore di rendimento raccoglie il risultato come elenco [stringa].

Nell'output, è possibile visualizzare l'elenco dei nomi degli argomenti generati come maggiore dell'articolo 10 e meno del numero 20 dell'articolo 20.

Esempio 2: Utilizzo della compensazione per la compensazione senza rese in Scala

Possiamo tralasciare il rendimento in comprensione. Quando ciò accade, la comprensione restituisce un'unità. Se vogliamo eseguire gli effetti collaterali, questo può essere utile. Ecco un programma simile che non utilizza il rendimento:

Abbiamo avviato l'oggetto del programma come "Demo2". In questo, abbiamo la definizione del metodo principale. All'interno del metodo principale, abbiamo un'altra definizione di funzione. La funzione è definita come "verifica" che prende la variabile "x" come input e la imposta con il tipo di int. Abbiamo assegnato la compensa a questa funzione. La compensazione per la compensazione ha il generatore e il filtro. Il generatore ha l'iterazione di io e j.

Quindi, la condizione "i*j> = x" viene eseguita qui se la condizione è protetta come filtro. Mentre abbiamo assegnato il valore della variabile "x" come "5". Nell'iterazione iniziale, io e J sono entrambi zero. Pertanto, i * j non è maggiore di x, e nulla viene quindi ceduto. Prima che io sia cresciuto a 1, J è aumentato di altre tre volte. Entrambi i valori di I e J su ogni iterazione fino a quando la condizione non è soddisfatta e sono stampati con il metodo println.

Il compilatore Scala al momento della compilation produce i seguenti risultati:

Esempio 3: Utilizzo della compensazione per due generatori in Scala

Ecco un'altra istanza in cui impieghiamo due generatori nella "pre-compressione" ma con la parola chiave di rendimento.

In questo esempio, abbiamo una definizione di funzione "Prodotto" sviluppato per calcolare tutte le coppie di numeri compresi tra 0 e X-1 il cui prodotto corrisponde a un valore specificato y. Abbiamo due generatori, io e J, che aumentano di 1 fino a x come indicato nella percprensione. Quindi usiamo il filtro se necessario. Itegniamo attraverso l'elenco con il per ogni ciclo e distruggono ogni membro come (i, j). Quindi, produce gli accoppiamenti.

Abbiamo anche creato l'elenco che il metodo è tornato senza alcun filtro per mostrare le fasi che i generatori I e J prendono. I risultati dimostrano che mentre uno dei generatori aumenta di N-1, l'altro rimane fisso. Il secondo generatore aumenta di 1 quando il primo raggiunge N-1.

È possibile vedere l'output dell'elenco generato con e senza il filtro nella completa come segue:

Conclusione

Le diverse capacità e funzionalità delle comprensioni Scala sono state quindi consapevoli tramite l'articolo di cui sopra. Con l'aiuto di più esempi, abbiamo dimostrato i vari vantaggi dell'utilizzo della comprensione di Scala nel modello di programmazione Scala. Successivamente, abbiamo appreso le molte capacità e il funzionamento del rendimento. Di conseguenza, ora saremo in grado di creare il codice utilizzando anche la comprensione di Scala.