Scala funzioni di ordine superiore

Scala funzioni di ordine superiore
Quando una funzione accetta un'altra funzione come parametro o restituisce un'altra funzione come output, viene definita una funzione di ordine superiore. Questo si riferisce a funzioni che interagiscono con altre funzioni. È importante notare che questa funzione di ordine superiore può essere utilizzata con funzioni e metodi che restituiscono le funzioni come risultati o prendono le funzioni come parametri. Ciò è fattibile perché il compilatore Scala consente la conversione dei metodi in funzioni. L'idea di funzioni di ordine superiore in Scala in Ubuntu 20.04 è spiegato in questo articolo.

Importanza delle funzioni di ordine superiore

Per quanto riguarda le funzioni di ordine superiore, alcuni punti chiave includono:

    • Le funzioni di ordine superiore sono concepibili perché il linguaggio di programmazione Scala tratta le funzioni come valori di prima classe. Ciò significa che, come altri valori, le funzioni possono essere fornite come parametri o output, il che è utile per fornire un modo flessibile per scrivere i programmi.
    • Quando si costruiscono una composizione di funzione in cui le funzioni possono essere create da altre funzioni, è vantaggioso. Il metodo di composizione noto come "composizione della funzione" prevede l'uso di due funzioni precedentemente composte per creare una singola funzione.
    • Le funzioni Lambda e le funzioni anonime possono anche essere create con il suo aiuto. Le funzioni senza nome, ma funzionano comunque come funzioni sono note come funzioni anonime.
    • Viene applicato ai programmi e riduce il numero di linee di codice inutili.

Esempio 1: usare una funzione per prendere un'altra funzione come argomento

Consideriamo il primo esempio di una funzione di ordine superiore. Passiamo la funzione in una determinata funzione come parametro.


Qui, l'oggetto è designato come "myobject". Quindi, all'interno della definizione principale dell'oggetto, abbiamo chiamato una funzione "func". La funzione "func" prende il valore numerico e la funzione "multiplythree" come input. Abbiamo nuovamente invocato la funzione "func" per stampare il valore di "x" che viene passato come input all'interno della "F". Infine, abbiamo impostato l'operazione "X*3" nella funzione "MultiplyThree".

Mentre abbiamo superato la funzione "multiplythree" all'interno dell'altra funzione "func", la funzione "func" emette il risultato della funzione "multiplybythree" come segue:

Esempio 2: usando la funzione anonima come lambda

Una funzione anonima non ha un nome ma svolge la stessa funzione. Quando non intendi ripetere una funzione in seguito, la creazione di una versione anonima è una buona idea. In Scala, gli operatori wild card “=>” razzo e "_" sottolineano possono essere utilizzati per generare funzioni anonime.
Eccone uno per illustrare:


All'interno del metodo principale dell'oggetto "MyDemo", abbiamo creato due variabili. Le variabili sono dichiarate come "Res1" e "Res2". La variabile "Res1" è inizializzata con la funzione anonima utilizzando l'operatore "=>". La funzione anonima è impostata con i parametri X e Y e sul lato destro dell'operatore di razzo "=>" abbiamo impostato l'equazione "x+y". Dopodiché, abbiamo un'altra funzione anonima che viene impiegata con il jolly "_". All'interno del metodo Println, abbiamo chiamato rispettivamente "Res1" e "Res2" e abbiamo assegnato loro due valori.

I risultati per entrambe le funzioni anonime sono generati come segue:

Esempio 3: usando l'espressione multilina

Il termine "espressione multilina" si riferisce alle espressioni che abbracciano molte linee. Quando si utilizza le espressioni multilinea in Scala, utilizzare ATTENZIONE. Per evitare problemi relativi all'espressione multilina, è possibile utilizzare i seguenti metodi:


L'oggetto "mytest" ha la definizione di tre funzioni. La prima funzione è definita come "sum1" che prende i parametri "i" e "j". I valori di input "i" e "j" sono impostati come "i+j" all'interno del blocco della funzione "sum1". Successivamente, abbiamo un'altra funzione come "sum2" che prende anche i valori di input e imposta anche l'operazione "I+J". Successivamente, abbiamo definito il metodo principale in cui sono dichiarate due variabili "risultato1" e "risultato2". Queste variabili sono chiamate funzioni "sum1" e "sum2" per passare i valori contro "io" e "j".

L'output ottenuto da entrambe le funzioni "sum1" e "sum2" hanno gli stessi risultati.

Esempio 4: utilizzando una funzione che trasporta

Un metodo in Scala può avere numerosi elenchi di parametri. Una funzione che accetta gli elenchi di argomenti mancanti come argomenti viene prodotto quando viene chiamata una funzione con meno elenchi di parametri di quanto richieda. In altre parole, è un metodo per modificare una funzione che accetta diversi parametri in uno che accetta solo uno.


Qui, abbiamo creato una funzione "Aggiungi" che richiede due argomenti separatamente. La "P" è la prima argomentazione e "Q" è la seconda argomentazione. Quindi, abbiamo dichiarato una variabile "risultato1" nel metodo principale. La variabile "risultato1" è chiamata funzione "Aggiungi" e imposta i valori per "P" e "Q". Inoltre, abbiamo superato il singolo argomento per la funzione "Aggiungi" che viene chiamato nella variabile "AddValues". Gli addValues ​​prendono anche i valori dell'argomento di un numero.

I risultati per il codice precedente al momento della compilation sono i seguenti:

Esempio 5: usando una funzione nidificata

Essendo un linguaggio di funzione di prima classe, Scala consente di passare le funzioni, restituire le funzioni, comporre le funzioni, utilizzare le funzioni nidificate e altro ancora. La definizione e la chiamata delle funzioni nidificate sono dimostrate nel seguente esempio:


All'interno della funzione "sub1", abbiamo definito un'altra funzione "sub2" che valuta la differenza tra "A-B". Al di fuori della funzione sub2, abbiamo chiamato "sub2" che prende il valore dell'argomento "x" e "sub2 (y, z)". Successivamente, abbiamo dichiarato un "risultato" variabile che è chiamato funzione sub1 e ha superato il valore numerico da valutare per diverse operazioni.

Di seguito è riportato il risultato di operazione diverso generato dal codice precedente:

Esempio 6: utilizzando una funzione con parametri di lunghezza variabile

È possibile definire le funzioni con parametri di lunghezza variabile in scala. Qualsiasi quantità di argomenti può essere approvata quando si chiama la funzione.


Alla funzione "Aggiungi", impostiamo la variabile "Mysum" che inizialmente è zero. Quindi, abbiamo per loop che itera sui numeri e incrementi del Mysum. All'interno del principale, abbiamo chiamato la funzione ADD e abbiamo passato i valori numerici ad essa.

La lunghezza della variabile "mysum" è stampata sullo schermo.

Conclusione

Abbiamo scoperto dall'articolo sopra menzionato che l'uso delle funzioni di ordine superiore in Scala può rendere la base di codice semplice e facile da comprendere per le operazioni. Le funzioni di ordine superiore sono quelle che accettano o restituiscono gli input da altre funzioni. Abbiamo anche esaminato gli esempi che dimostrano le varie applicazioni per queste funzioni di ordine superiore. Inoltre, abbiamo imparato a consegnare le funzioni anonime come funzioni di alto ordine.