Scala høyere ordenfunksjoner

Scala høyere ordenfunksjoner
Når en funksjon godtar en annen funksjon som en parameter eller returnerer en annen funksjon som en utgang, blir den referert til som en høyere ordenfunksjon. Dette refererer til funksjoner som samhandler med andre funksjoner. Det er viktig å merke seg at denne høyere ordenfunksjonen kan brukes med funksjoner og metoder som returnerer funksjonene som resultater eller tar funksjonene som parametere. Dette er mulig fordi Scala -kompilatoren tillater konvertering av metoder til funksjoner. Ideen om høyere ordenfunksjoner i Scala i Ubuntu 20.04 forklares i denne artikkelen.

Viktigheten av funksjoner med høyere orden

Når det gjelder funksjoner med høyere orden, inkluderer noen viktige punkter:

    • Funksjoner med høyere orden kan tenkes fordi Scala-programmeringsspråket behandler funksjonene som førsteklasses verdier. Dette betyr at, som andre verdier, kan funksjonene leveres som parametere eller utganger, noe som er nyttig for å gi en fleksibel måte å skrive programmene.
    • Når du konstruerer en funksjonssammensetning der funksjoner kan opprettes fra andre funksjoner, er det fordelaktig. Metoden for sammensetning kjent som "funksjonssammensetning" innebærer å bruke to tidligere sammensatte funksjoner for å lage en enkelt funksjon.
    • Lambda -funksjoner og anonyme funksjoner kan også opprettes med sin hjelp. Funksjonene uten navn, men likevel fungerer som funksjoner er kjent som anonyme funksjoner.
    • Det brukes på programmer i tillegg til å kutte ned antall meningsløse kodelinjer.

Eksempel 1: Bruke en funksjon for å ta en annen funksjon som et argument

La oss vurdere det første eksemplet på en høyere ordenfunksjon. Vi passerer funksjonen i en gitt funksjon som en parameter.


Her er objektet betegnet som "MyObject". Deretter, innenfor objektets hoveddefinisjon, kalte vi en funksjon "func". Funksjonen “func” tar den numeriske verdien og funksjonen “MultiplyByThree” som en inngang. Vi påkalte igjen funksjonen "func" for å skrive ut verdien av "x" som sendes som en inngang i "f". Til slutt setter vi operasjonen “X*3” i funksjonen “MultiplyByThree”.

Da vi passerte funksjonen “MultiplyByThree” i den andre funksjonen “Func”, sender funksjonen “Func” resultatet av "MultiplyByThree" -funksjonen som følger:

Eksempel 2: Bruke anonym funksjon som lambda

En anonym funksjon har ikke et navn, men utfører den samme funksjonen. Når du ikke har tenkt å gjenta en funksjon senere, er det en god idé å lage en anonym versjon. I Scala kan Wild Card -operatørene “=>” rakett og “_” understreking brukes til å generere anonyme funksjoner.
Her er en for å illustrere:


Innenfor hovedmetoden til objektet “MyDemo” opprettet vi to variabler. Variablene er erklært som “res1” og “res2”. Variabelen “RES1” initialiseres med den anonyme funksjonen ved å bruke operatøren “=>”. Den anonyme funksjonen er satt med x- og y -parametrene og på høyre side av raketten "=>" -operatøren setter vi ligningen "x+y". Etter det har vi en annen anonym funksjon som er ansatt i jokertegnene "_". Innenfor Println -metoden kalte vi henholdsvis “RES1” og “RES2” og tildelte dem to verdier.

Resultatene for begge de anonyme funksjonene genereres som følger:

Eksempel 3: Bruke multilinuttrykk

Begrepet "multiline uttrykk" refererer til uttrykkene som spenner over mange linjer. Når du bruker multiline uttrykk i Scala, kan du bruke forsiktighet. For å unngå problemer angående multiline uttrykk, kan du bruke følgende metoder:


Objektet “Mytest” har definisjonen av tre funksjoner. Den første funksjonen er definert som "sum1" som tar parametrene "i" og "j". Inngangsverdiene “I” og “J” er satt som “I+J” inne i funksjonen “SUM1” -blokk. Deretter har vi en annen funksjon som "SUM2" som også tar inngangsverdiene og også angir operasjonen "I+J". Etter det definerte vi hovedmetoden der to variabler “resultat1” og “resultat2” er erklært. Disse variablene kalles funksjonene “SUM1” og “SUM2” for å ha passert verdiene mot “jeg” og “j”.

Utgangen oppnådd av begge funksjonene “SUM1” og “SUM2” har de samme resultatene.

Eksempel 4: Bruke en funksjonsføring

En metode i Scala kan ha mange parameterlister. En funksjon som aksepterer de manglende argumentlistene som argumenter blir produsert når en funksjon kalles med færre parameterlister enn den krever. Med andre ord, det er en metode for å endre en funksjon som godtar flere parametere til en som bare aksepterer en.


Her opprettet vi en funksjon “Legg til” som tar to argumenter separat. "P" er det første argumentet og "Q" er det andre argumentet. Deretter erklærte vi en variabel “resultat1” i hovedmetoden. Variabelen “Resultat1” kalles “Add” -funksjonen og angir verdiene for “P” og “Q”. Vi passerte også det eneste argumentet for "Add" -funksjonen som kalles i variabelen "AddValues". Tilleggene tar også argumentverdiene til et tall.

Resultatene for den forrige koden ved sammenstilling er som følger:

Eksempel 5: Bruke en nestet funksjon

Å være et førsteklasses funksjonsspråk, kan Scala gjøre deg i stand til å passere funksjonene, returnere funksjonene, komponere funksjonene, bruke de nestede funksjonene og mer. Definisjonen og kallet til nestede funksjoner er demonstrert i følgende eksempel:


Innenfor funksjonen “Sub1” definerte vi en annen funksjon “Sub2” som evaluerer forskjellen mellom “A-B”. Utenfor SUB2 -funksjonen kalte vi “Sub2” som tar argumentverdien “X” og “Sub2 (Y, Z)”. Deretter erklærte vi et variabelt “resultat” som kalles SUB1 -funksjonen og passerte den numeriske verdien som skal evalueres for forskjellig drift.

Følgende er det forskjellige operasjonsresultatet generert av forrige kode:

Eksempel 6: Bruke en funksjon med parametere med variabel lengde

Du kan definere funksjonene med parametere med variabel lengde i Scala. Enhver mengde argumenter kan sendes når du ringer funksjonen.


Til funksjonen "Legg til", setter vi variabelen "mysum" som opprinnelig er null. Deretter har vi for loop som itererer over tallene og trinnene fra mysum. Inne i hovedsak kalte vi ADD -funksjonen og passerte de numeriske verdiene til den.

Lengden på variabelen “Mysum” er skrevet ut på skjermen.

Konklusjon

Vi oppdaget fra den nevnte artikkelen at bruk av høyere ordenfunksjoner i Scala kan gjøre kodebasen enkel og enkel å forstå for operasjoner. Funksjoner med høyere orden er de som godtar eller returnerer inngangene fra andre funksjoner. Vi undersøkte også eksemplene som demonstrerte de forskjellige applikasjonene for disse høyere ordensfunksjonene. I tillegg lærte vi hvordan vi kan overlate de anonyme funksjonene som høye ordensfunksjoner.