Scala domyślnie

Scala domyślnie
„Wszyscy uczą się lub przyjmują język komputerowy Scala, ostatecznie napotyka domyślnie identyfikator. Jednak stosunkowo niewielu poświęca czas na pełne zrozumienie jego znaczenia. Niniejszy przewodnik przeanalizuje semantykę i główne zastosowania funkcji domyślnie. Domyślnie funkcjonuje zasadniczo jako „kompilator implik.”Jeśli istnieje wartość niejawna typu„ t ”, możemy to potwierdzić. Kompilator powiadomi nas o sytuacji, jeśli nie ma niejawnej wartości typu „T” dostępna w zakresie. Jest to przydatna opcja, którą musimy ustalić, czy wartość określonego typu jest dostępna w niejawnym zakresie."

Składnia niejawnego słowa kluczowego w Scali w Ubuntu 20.04

Aby skonstruować jawne, konkretne przykłady dostępności typów, w bibliotece standardowej Scala zawiera metodę użyteczności. Dodatkowo niejawna jest nazwa metody. Zauważ, że wersja Scala 2.8 wprowadza domyślnie, co jest opisane w Predef jako:

definly [t] (niejawny e: t) = e

Przykład nr 1: Program domyślnie słów kluczowych Scala w Ubuntu 20.04

Oto krótka ilustracja prezentacji Retronims:

Do trybu repl. Scala nazwaliśmy zmienną „x” z niejawnym słowem kluczowym i zainicjowaliśmy je z ciągiem. Określiliśmy niejawną wartość typowanego ciągu. Typ jest zwracany po wykonywaniu wiersza kodu. Następnie przeszukaliśmy typową wartość ukrytą ciągłej, przekazując ją w funkcji domyślnie, a następnie przypisaliśmy do zmiennej „Y”. Kompilator zwrócił wartość ciągu „demo”, ponieważ zapisywał tę wartość. Następnie znaleźliśmy niejawną wartość typu „int” i ustawiliśmy ją w zmiennej „z”. W przypadku kompilacji generuje błąd „nie może znaleźć niejawnej wartości dla parametru int”.

Przykład nr 2: Program zrozumienia i rozwiązywania problemu ukrytych poglądów w Scali w Ubuntu 20.04

Kiedy prefiks wyboru (na przykład.prefiks.Wybór (ARG) nie ma wyboru członka mających zastosowanie do ARG), jest pusty, można uruchomić niejawny pogląd (nawet po próbie przekonwertowania argumentów za pomocą poglądów niejawnych). Kiedy tak się dzieje, kompilator szuka domyślnych elementów, które są podobne do niejawnych metod lub funkcji z typu z zadeklarowanym wyborem, lokalnie określonym w bieżącym.

Tutaj przekazaliśmy wartość „3” wewnątrz 1.min () jako „int” nie ma definicji min. Typ wyniku Int generuje wartość „1”. Następnie użyliśmy słowa kluczowego domyślnie do INT, który ma definicję min. Zwrócił niejawny typ „int” jako . Następnie wykonaliśmy RES2 (1), który zlokalizuje niejawną wartość obecną w definicji AnyRef. W końcu użyliśmy .GetClass Method, która zwróciła Scala.czas wykonawczy.Klasa Richint.

Ponadto, gdy wyrażenie odbiega od oczekiwanego typu, można uruchomić ukryte widoki, jak pokazano poniżej:

Przypisaliśmy Scala.czas wykonawczy.Instrukcja Richint do wartości „1”, która po wykonaniu zapewniła niejawną wartość „1”

Ta funkcja jest wymagana przez kompilator w tym przypadku:

Scala.czas wykonawczy.Richint jest następnie przypisywany do typu int wewnątrz domyślnie funkcji i daje wyjście AS.

Przykład nr 3: Program dostępu do kontekstu niejawnego parametrów Scala w Ubuntu 20.04

Parametry niejawne Scali mogą być nawet bardziej znaczące niż jego niejawne poglądy. Są zgodne z klasą typu. Jest to wykorzystywane sporadycznie w standardowej bibliotece; Zobacz Scala, w jaki sposób zamówienie jest stosowane w SEQ Like#SOTRED. Manifesty tablicy i obiekty Canbuild From są również przekazywane przy użyciu niejawnych parametrów.

Granice kontekstowe to składnia skrótu, którą Scala 2.8 ofert domyślnych argumentów. Krótko mówiąc, metoda, która wymaga ukrytego wkładu typu Y [x]

Parametr niejawny jest przekazywany, ale nie jest nazwany. Podczas stosowania metody FOO dokładnie może być przydatne? Często jest wysyłanie niejawnego parametru jako niejawny parametr do innej funkcji, która jest wywoływana zamiast być wyraźnie wymieniona. Aby zmaterializować wartość, możesz wywołać domyślnie, zachowując zwięzłą definicję metody z związaną kontekstem.

Przykład nr 4: Program nadawania jawnego wejścia do części niejawnych parametrów Scala w Ubuntu 20.04

Rozważ następujący scenariusz przy użyciu podejścia opartego na klasie typu i wywołując metodę, która ładnie drukuje szczegóły ucznia:

Zdefiniowaliśmy „wyświetlacz” cechy Scala, który ma definicję wyświetlacza, ponieważ przyjmuje typ „t” i przypisuje do niej wartość „1”. Następnie utworzyliśmy obiekt „wyświetlanie”, w którym ustalane są niejawne funkcje. Pierwsza funkcja niejawna jest deklarowana jako „intDisplay”, która ma definicję „int”. Ta funkcja jest ustawiona z nowym słowem kluczowym dla wyświetlania [int], które zwróci reprezentację ciągu.

Następnie ustaliliśmy kolejną niejawną funkcję jako „StringDisplay” dla definicji ciągu. Następnie mamy funkcję „MyStringDisplay”, która ma tupperazę do konwersji do górnej skrzynki. Następnie skonstruowaliśmy klasę Case „Student” i ustawiliśmy jej atrybuty „Nazwa” z typem danych „String” i „Age” z typem „INT”.

Wdrożyliśmy obiekt „uczeń”, w którym zdefiniowana jest domyślna funkcja „studenckiej”. Funkcja przypisała dwie zmienne, „di” dla liczby całkowitej i „ds” dla wyświetlania ciągu. Ta niejawna funkcja ma zagnieżdżoną funkcję „wyświetlanie”, która tworzy obiekt „S” dla klasy „uczeń”. DS.Wyświetlacz przyjmuje dane wejściowe.nazwa ”i DI.Wyświetlacz przyjmuje „S.Parametr wieku ”. Wreszcie, zmienna „S” ustawia wartości atrybutów „nazwa” i „wiek” dla klasy „uczeń”. Dzięki funkcji domyślnie wyświetliśmy wartości „ucznia”.

Repon Scala Res6 pokazał wyniki niejawnych wartości klasy „uczeń” w następujący sposób:

Co się stanie, jeśli chcemy zmienić sposób, w jaki nazwa jest wynikiem? Chociaż możemy bezpośrednio używać StudentDisplay i dostarczyć innego wyświetlacza [String], wolimy, aby kompilator przekazał wyświetlacz [int].

Uzyskuje się następujące wyniki, jeśli zastosujemy powyższy kawałek linii w poprzednim kodzie.

Wniosek

W tym poście omówiliśmy domyślnie funkcję, która była częścią Scali od wersji 2.8. Najpierw zaczęliśmy demonstrować podstawową rolę funkcji jako „kompilatora domyślnego”. Ta niejawna metoda jedynie przewiduje parametr typu, lokalizuje wartość domyślną obecną w zakresie, przywołuje ją i zwraca nam. Niezwykle podstawowa technika powinna być stosowana domyślnie z następujących powodów.