Prawa monad w Scali w Ubuntu 20.04
Zapewniamy, że jakakolwiek sukcesja wdrożeń funkcji FlatMap i jednostki powoduje ważną monadę, jeśli monada spełnia trzy prawa. Innymi słowy, wartość nadal podlega skutkom monady. Całkowicie użyteczny kod, który rozwiązuje ogólny problem, to to, co Monady i ich zasady definiują jako paradygmat projektowy z perspektywy programowania.
Następujące trzy przepisy Monad:
Pozostawiona tożsamość
Zgodnie z lewą tożsamością wywołanie funkcji FlatMap w celu zastosowania funkcji „F” do wartości „x”, która została podniesiona przez funkcję jednostki, jest identyczne z zastosowaniem funkcji „F” prosto do wartości „x”:
Monad.Jednostka (x).flatmap (f) = f (x)Właściwa tożsamość
Mówi, że gdy używana jest funkcja FlatMap, a funkcja jednostki jest używana jako funkcja „F”, wynik jest początkową wartością monadyczną:
X.flatmap (y => monada.Jednostka (y)) = xAsocjacyjność
Zgodnie z tą zasadą użycie serii połączeń flatmap w celu zastosowania dwóch funkcji, „f” i „g”, do wartości monady jest identyczne z użyciem „g” do zastosowania do wyjścia funkcji flatmap z „f” jako parametr.
X.flatmap (f).flatmap (g) = o.flatMap (x => f (x).Flapmap (g))Zalety monad w Scali w Ubuntu 20.04
Jak używać monad w Scali w Ubuntu 20.04
Monady służą do zawierania obiektów i wytwarzają odpowiednie dwie funkcje:
jednostka(): Podobnie jak słowo kluczowe Java, Unit () nie zwraca żadnych typów danych.
FlatMap ():Podobnie do mapy funkcji scala (), flatMap () zamiast tego wytwarza serię elementów w przeciwieństwie do jednego komponentu. Po zastosowaniu flatMap do danej sekwencji, lista jest wytwarzana z eliminowaną grupą wewnętrzną i powstaną sekwencję. Termin „monadyczny” odnosi się do kolekcji, które mogą obsługiwać zarówno FlatMap, jak i mapę.
Przykład nr 1: Używanie flatMap i mapy do kolekcji w Scala w Ubuntu 20.04
Czasami monada przypomina kontenerowi o użyciu określonego interfejsu podczas pracy z jego wartościami. Monad może przypominać pudełko z obiektem w środku, jeśli sami go modelujemy. Możemy odzyskać ten obiekt za pomocą flatMap i jeszcze jednej praktycznej mapy funkcji.
Do tego programu Scala zdefiniowaliśmy obiekt jako „myObject1” jako tworzony obiekt „MyObject1”. Teraz, w ramach „MyObject1”, zaimplementowaliśmy definicję głównej funkcji Scala. Ta funkcja służy jako główny punkt wyjścia do uruchamiania dowolnego kodu Scala. W ramach głównej funkcji Scali mamy deklarację zmiennych jako „L1” i „L2”. Do tych zmiennych przypisaliśmy „listę” i „listę” do zainicjowania odpowiednio z czterema różnymi liczbami.
Następnie mamy inną zmienną, „L3”, w której zastosowaliśmy funkcję flatMapfunk, a w ramach funkcji FlatMap wywołaliśmy funkcję mapy. Po pierwsze, funkcja MAP obliczyła listę; Następnie FlatMap ocenił listę. Lista zostanie wygenerowana przez funkcję println, ponieważ przekazaliśmy do niej zmienną „L3”, ponieważ „L3” ma operację Monads.
Mamy inną listę po zastosowaniu funkcji mapy, ale na końcu poniższa lista jest generowana po zastosowaniu funkcji FlatMap.
Przykład nr 2: Używanie flatMap do usuwania grupy wewnętrznej w Scala w Ubuntu 20.04
Wyjaśniliśmy funkcję flatMap we wspomnianym skrypcie Scala z wyjściem. Teraz, w tej konkretnej instancji Scala, usunęliśmy wewnętrzną grupę kolekcji za pomocą aplikacji FlatMap ().
Ustanowiliśmy obiekt Scala jako „myObject2”. Następnie podnieśliśmy główną definicję metody w „myoBject2”. Główna definicja ma argument wiersza poleceń dotyczących obsługi funkcji Scala. Główna metoda jest rozszerzona o deklarowanie zmiennych i działalności. Zdefiniowaliśmy dwie zmienne „P” i „Q”, które mają listę liczb w zakresie.
Elementy zestawu są zwracane jako lista metodą tolist (). Następnie zastosowaliśmy MAP Flat, a następnie funkcję MAP, która jest wywoływana w zmiennej „L3”. Po pierwsze, lista jest obliczana z operacji „I*J”. Następnie otrzymaliśmy listę z funkcji mapy. Z funkcji FlatMap oceniana jest tylko jedna lista. Wszystkie listy wewnętrzne zostaną usunięte wewnętrznie.
Stąd lista po usunięciu kolekcji wewnętrznych jest generowana jak poniżej.
Wniosek
W tym przewodniku omówiliśmy pomysł monad w Scali. Wprowadziliśmy minimalny zestaw metod, które monada musi wykonać po zaoferowaniu krótkiej definicji monad, która obejmowała jednostkę i mapę płaską. Wreszcie omówiliśmy trzy prawa monady. Biblioteka standardowa Scala ma wiele różnych rodzajów, na które wpływają interesująca i praktyczna idea monad. Rodzaje kolekcji list, drzewa i mapy, aby wymienić kilka, a także opcje, przyszłość i albo są monady.