Laws of Monads in Scala i Ubuntu 20.04
Vi sikrer at enhver rekke distribusjoner av flatmappen og enhetsfunksjonene resulterer i en gyldig monad hvis monaden oppfyller de tre lovene. Med andre ord, en verdi er fremdeles underlagt effekten av monaden. Et fullstendig gjenbrukbart stykke kode som løser et generelt problem er det som monader og deres regler definerer som et designparadigme fra perspektivet til programmering.
Følgende tre monadlover:
Venstre identitet
I henhold til venstre identitet er det å påkalle flatmapfunksjonen for å anvende en funksjon "F" på en verdi "x" som ble hevet av enhetsfunksjonen identisk for å anvende funksjonen "F" rett på verdien "x":
Monad.enhet (x).flatmap (f) = f (x)Riktig identitet
Den sier at når flatmapfunksjonen brukes, og enhetsfunksjonen brukes som funksjonen "F", er utfallet den første monadiske verdien:
x.flatmap (y => monad.enhet (y)) = xAssosiativitet
I henhold til denne regelen, ved å bruke en serie flatmap -anrop for å anvende to funksjoner, "f" og "g", er en monadverdi identisk med å bruke "g" for å gjelde utgangen fra flatmap -funksjonen med "f" som parameter.
x.flatmap (f).flatmap (g) = o.flatmap (x => f (x).FlapMap (G))Fordeler med monader i Scala i Ubuntu 20.04
Hvordan bruke monader i Scala i Ubuntu 20.04
Monader brukes til å inneholde objekter, og de produserer de tilsvarende to funksjonene:
enhet(): I likhet med Javas void nøkkelord, returnerer ikke enhet () noen datatyper.
flatmap ():I likhet med Scala -funksjonskartet () produserer flatmap () i stedet en serie elementer i motsetning til en enkelt komponent. Etter å ha påført en flatmap på den gitte sekvensen, produseres en liste med den indre gruppering eliminert og en sekvens opprettet. Begrepet "monadisk" refererer til samlinger som kan støtte både flatmap og kart.
Eksempel 1: Bruke flatmap og kart for samlingen i Scala i Ubuntu 20.04
Noen ganger vil en monad minne en beholder om å bruke et spesifikt grensesnitt når man jobber med verdiene. Monad kan ligne en boks med et objekt inne hvis vi modellerer den selv. Vi kan hente dette objektet ved hjelp av flatmap og ett mer praktisk funksjonskart.
Til dette Scala -programmet har vi definert objektet som "MyObject1" som objektet "MyObject1" er opprettet. Nå, innenfor "MyObject1", har vi implementert definisjonen av Scala hovedfunksjon. Denne funksjonen fungerer som det primære utgangspunktet for å kjøre en hvilken som helst skalakode. Innenfor Scalas hovedfunksjon har vi erklæringen om variablene som “L1” og “L2”. Til disse variablene har vi tildelt henholdsvis "listen" og "listen" som skal initialiseres med de fire forskjellige tallene.
Deretter har vi en annen variabel, “L3” der vi har brukt flatmapfunksjonen, og innenfor flatmapfunksjonen har vi påkalt kartfunksjonen. Først beregnet kartfunksjonen listen; Etterpå evaluerte flatmappen listen. Listen vil bli generert av Println -funksjonen da vi har gitt variabelen “L3” til den fordi “L3” har en Monads -operasjon.
Vi har en annen liste når kartfunksjonen blir brukt, men til slutt genereres listen nedenfor etter å ha brukt flatmapfunksjonen.
Eksempel 2: Bruke en flatmap for å fjerne intern gruppe i Scala i Ubuntu 20.04
Vi har forklart funksjonen til flatmappen i det nevnte Scala -skriptet med utgangen. Nå, i denne spesielle Scala -forekomsten, har vi fjernet den indre gruppering av samlingene ved å bruke FlatMap () -applikasjonen.
Vi har etablert Scala -objektet som "MyObject2". Deretter løftet vi hovedmetodedefinisjonen i "MyObject2". Hoveddefinisjonen har kommandolinjeargumentet for å støtte Scala -funksjonene. Hovedmetoden utvides med erklæringen om variablene og driften. Vi har definert de to variablene “P” og “Q” som har listen over tall innenfor området.
Settets elementer blir returnert som en liste etter Tolist () -metoden. Etter det anvendte vi flatmappen og deretter kartfunksjonen, som påberopes inne i variabelen “L3”. Først beregnes listen fra operasjonen “I*j”. Deretter fikk vi listen fra kartfunksjonen. Fra flatmap -funksjonen er bare en liste evaluert. Alle de interne listene blir fjernet internt.
Derfor genereres listen etter fjerning av de interne samlingene som nedenfor.
Konklusjon
Vi diskuterte ideen om monader i Scala i denne guiden. Vi introduserte det minimale settet med metoder som en monad må utføre etter å ha tilbudt en kort definisjon av monader, som inkluderte enheten og flatmappen. Vi diskuterte de tre monadlovene i slutt. Scala Standard Library har et bredt utvalg av typer som alle er påvirket av den interessante og praktiske ideen om monader. Samlingstyper av lister, tre og kart, for å nevne noen få, så vel som alternativ, fremtid og enten, er alle monader.