Scala mønster matching

Scala mønster matching
Scala -språket har en potent funksjon som heter mønstermatching. Det gjør koden kortere og enklere å lese, samtidig som den muliggjør sammenligning av elementer med kompliserte mønstre. Det er en metode for å sammenligne en verdi med et mønster. Det er sammenlignbart med Javas og Cs Switch -setninger. I dette emnet lærer vi de generelle mønstermatchingsteknikkene og hvordan de kan brukes til vår fordel.

I stedet for å bruke en bryterklæring, brukes nøkkelordet "Match" her. Ordet "match" er konsekvent erklært i rotklassen til Scala for å sikre at alle objekter kan få tilgang til det. Et mønster og ett eller flere uttrykk er inkludert i hver sakserklæring. De blir bare evaluert hvis det angitte mønsteret samsvarer. Arrow -tegnet (=>) brukes for å skille mønsteret fra uttrykkene.

Komponenter av mønstermatching i Scala

Kamputtrykkene er sammensatt av forskjellige komponenter:

    1. "Kandidat" refererer til verdien vi bruker for å matche mønstrene.
    2. "Match" nøkkelordet.
    3. Koden som skal kjøres når mønsteret samsvarer med, mønsteret, nøkkelordet og et pilsymbol utgjør mange saksklausuler.
    4. En standarduttalelse i fravær av en mønsterkamp. Fordi det inneholder understrekesymbolet (_) og kommer etter sakens klausuler, kan standardklausulen lett identifiseres.

La oss se på et enkelt eksempel for å demonstrere disse elementene:

Eksempel 1: Mønstermatching av type “int” i Scala

Som en mønsterkamp krever et eksempel en heltallverdi og returnerer også et heltall. Andre parametere enn heltall kan ikke sendes. Å gjøre det resulterer i en fiasko.


Innenfor Scala -skriptet etablerte vi objektet som "my_object" med Scala -objektmodifisereren. Den inneholder hovedmetoden som bruker println for å vise uttalelsen. I println -metoden påkalte vi testmetoden. Testmetoden tar heltallstypen parameter “1”. Deretter har vi en funksjonell tilnærmingsmetode der vi definerte testmetoden. Testmetoden tar variabelen “i” av typen “int”.

Vi setter nøkkelordet "Match" med variabelen "jeg". Inne i blokkdelen brukes saksuttalelsene. Vi har tre tilfeller her som returnerer uttrykket på den tilfredsstillende saken. Uttrykket som er inkludert i en sak blir evaluert hvis verdien av “i” samsvarer med noen av sakene. Siden vi oppnådde suksess i dette første forsøket, blir sak 1 vurdert. Hvis verdien av "jeg" ikke er 0 eller 1, blir standardkassen som er "case_" utført.

Vi lagret det nevnte Scala -programmet i “Eksemplet.Scala ”-filen. Deretter utfører vi Scala -programmet med objektnavnet du har gitt i skriptet. Her har vi “my_object”. Vi utførte dette objektet med Scala -nøkkelordet. Som du kan se, oppnås tilfellet 1 -uttrykket fordi det samsvarer med mønsteret.

Eksempel 2: Mønstermatching av type "String" i Scala

Hvert objekt i Scala har en statisk type som ikke kan endres fordi det er et skrevet språk. Et objekt av typen streng, for eksempel, kan bare ha strenguttrykkene. Som sett i følgende illustrasjon, gjør Scala det enkelt å sammenligne objektene med type mønstre.


Begynn med å konstruere objektet med det forrige Scala -skriptet. Objektet tildeles navnet “Linux_Object”. Inne i kroppen til det objektet har vi hovedfunksjonsdefinisjonen. Println -metoden påberopes innenfor hovedfunksjonsdefinisjonen der vi kalte testmetoden og passerte strengparameteren “Saeed” til den. Etter det har vi en testfunksjon der variabelen “x” er erklært for typestrengen.

Vi tildelte kampmodifisereren til denne variabelen “X” for et samsvarende mønster av sakene. Innenfor blokken av testmetoden er tre tilfeller utstyrt med uttrykkene. Her utføres saken med jokertegnet “_”.

Scala -skriptet er samlet med Scala Modifier og navnet på objektet “Linux_Object” fra forrige program. Den oppnådde utgangen har uttrykket “Standard case utført” fra “CASE_”.

Eksempel 3: Mønstermatching av saksklasser i Scala

Saksklasser er unike klasser som brukes i tilfellet med uttrykksbasert mønstermatching. Dette er konvensjonelle klasser med den spesielle modifiseringsfeltet. Eksemplet som følger er en enkel illustrasjon av mønstermatching som bruker saksklassen:


Ved å definere "my_demo" -objektet, startet vi dette Scala -skriptet. Inne. Her erklærte vi de tre variablene - “Cyan”, “Dora” og “Marrie” - med nøkkelordet “Val”. Variablene kalt "person" -klassen med det nye nøkkelordet og angir verdiene mot hver variabel. Verdiene som sendes til "person" -klassen er strengverdiene og heltallverdien. Deretter itererer vi gjennom listen over "cyan", "Dora" og "Marrie" -variablene ved å bruke for -loopen og bruke saksuttrykkene med "person" -metoden ved å gi verdiene verdier.

"Cyan" -variabelen er det matchende uttrykket i det første tilfellet, navnet "Dora" er det matchende uttrykket i det andre tilfellet, og for alle andre verdier er detaljene vist som angitt i det siste tilfellet. P_navnet og P_age -parametrene gis til personkonstruktøren for en tom. Sist, men ikke minst, er klassepersonen tom fordi ingen metode må defineres inne i den.

Når det forrige Scala -skriptet blir utført, viser det alle sakens mønstermatchende uttrykk.

Konklusjon

Dette er en manual for scala mønster matching. Mønstermatching i Scala er forbedret enn å bytte i Java. Kampens nøkkelord brukes til å matche inngangen som er gitt i Scala. Her går vi over en kort introduksjon til Scalas mønstermatchende funksjonalitet, sammen med riktig syntaks og relevante eksempler. Mønstermatching har fordelen av å være både utrolig allsidig og ekstremt kraftig. Datastrukturen er dynamisk ødeleggende i mønsteret. Variablene som er spesifikke for dette uttrykket, kan deretter tildeles direkte til disse komponentene.