Znaczenie funkcji wyższego rzędu
Jeśli chodzi o funkcje wyższego rzędu, niektóre kluczowe punkty obejmują:
Przykład 1: Korzystanie z funkcji do przejęcia innej funkcji jako argumentu
Rozważmy pierwszy przykład funkcji wyższego rzędu. Podajemy funkcję w danej funkcji jako parametr.
Tutaj obiekt jest oznaczony jako „MyObject”. Następnie, w głównej definicji obiektu, nazwaliśmy funkcję „FUNC”. Funkcja „FUNC” przyjmuje wartość liczbową i funkcję „mnożąTher” jako wejście. Ponownie powołaliśmy się do funkcji „FUNC”, aby wydrukować wartość „x”, która jest przekazywana jako wejście wewnątrz „F”. Na koniec ustawiamy operację „x*3” w funkcji „mnożą”.
Gdy przekazaliśmy funkcję „mnożąTeTher” w drugiej funkcji „FUNC”, funkcja „FUNC” wyświetla wynik funkcji „mnożąTeTher” w następujący sposób:
Przykład 2: Korzystanie z funkcji anonimowej jako lambda
Anonimowa funkcja nie ma nazwy, ale wykonuje tę samą funkcję. Kiedy nie zamierzasz powtarzać funkcji później, tworzenie anonimowej wersji jest dobrym pomysłem. W Scala operatorzy dzikich kart „=>” i podkreślenie „_” mogą być używane do generowania funkcji anonimowych.
Oto ilustrujący:
W głównej metodzie obiektu „myDemo” utworzyliśmy dwie zmienne. Zmienne są deklarowane jako „RES1” i „RES2”. Zmienna „RES1” jest inicjowana z funkcją anonimową za pomocą operatora „=>”. Funkcja anonimowa jest ustawiona z parametrami x i y oraz po prawej stronie operatora rakiety „=>” ustawiamy równanie „x+y”. Następnie mamy kolejną anonimową funkcję, która jest zatrudniona z wieloznaczną kartą „_”. W ramach metody println nazwaliśmy odpowiednio „res1” i „res2” i przypisaliśmy im dwie wartości.
Wyniki obu funkcji anonimowych są generowane w następujący sposób:
Przykład 3: Korzystanie z wyrażenia multiline
Termin „wyrażenie multiline” odnosi się do wyrażeń obejmujących wiele linii. Podczas korzystania z wyrażeń wielopoziomowych w Scali, zachowaj ostrożność. Aby uniknąć problemów związanych z wyrażeniem wielopoziomowym, możesz użyć następujących metod:
Obiekt „MyTest” ma definicję trzech funkcji. Pierwsza funkcja jest definiowana jako „sum1”, która przyjmuje parametry „i” i „j”. Wartości wejściowe „I” i „J” są ustawione jako „i+j” wewnątrz bloku funkcji „sum1”. Następnie mamy inną funkcję jako „sum2”, która również przyjmuje wartości wejściowe, a także ustawia operację „i+j”. Następnie zdefiniowaliśmy główną metodę, w której zadeklarowane są dwie zmienne „wynik1” i „wynik2”. Zmienne te są nazywane funkcjami „sum1” i „sum2” dla przekazywania wartości w stosunku do „i” i „j”.
Wyjście uzyskane przez obie funkcje „sum1” i „sum2” mają te same wyniki.
Przykład 4: Korzystanie z funkcji noszenia
Metoda w Scali może mieć liczne listy parametrów. Funkcja, która akceptuje listy brakujących argumentów jako argumenty, gdy funkcja jest wywoływana z mniejszą liczbą list parametrów, niż wymaga. Innymi słowy, jest to metoda zmiany funkcji, która akceptuje kilka parametrów na jedną, która akceptuje tylko jedną.
Tutaj stworzyliśmy funkcję „dodaj”, która pobiera dwa argumenty osobno. „P” jest pierwszym argumentem, a „Q” jest drugim argumentem. Następnie zadeklarowaliśmy zmienną „wynik1” w głównej metodzie. Zmienna „wynik1” nazywana jest funkcją „Dodaj” i ustawia wartości dla „P” i „Q”. Ponadto przekazaliśmy pojedynczy argument dla funkcji „dodaj”, która jest wywoływana w zmiennej „Dodaj wartości”. Dodatki przyjmują również wartości argumentów liczby.
Wyniki poprzedniego kodu po kompilacji są następujące:
Przykład 5: Korzystanie z funkcji zagnieżdżonej
Będąc językiem funkcji pierwszej klasy, Scala umożliwia przekazanie funkcji, zwracanie funkcji, komponowanie funkcji, korzystanie z zagnieżdżonych funkcji i innych. Definicja i wywołanie funkcji zagnieżdżonych pokazano w poniższym przykładzie:
W ramach funkcji „sub1” zdefiniowaliśmy inną funkcję „sub2”, która ocenia różnicę między „A-B”. Poza funkcją Sub2 nazwaliśmy „sub2”, która przyjmuje wartość argumentu „x” i „sub2 (y, z)”. Następnie zadeklarowaliśmy zmienną „wynik”, który jest nazywany funkcją sub1 i przekazaliśmy wartość liczbową do oceny dla różnych operacji.
Poniżej znajduje się inny wynik operacji generowany przez poprzedni kod:
Przykład 6: Za pomocą funkcji o parametrach o zmiennej długości
Możesz zdefiniować funkcje o parametrach o zmiennej długości w Scala. Każdą ilość argumentów można przekazać podczas wywoływania funkcji.
Do funkcji „dodaj” ustawiamy zmienną „mysum”, która początkowo jest zerowa. Następnie mamy do pętli, która iteruje liczby i przyrosty przez mysum. Wewnątrz głównej nazwaliśmy funkcję dodawania i przekazaliśmy do niej wartości numeryczne.
Długość zmiennej „MySum” jest wydrukowana na ekranie.
Wniosek
Z wyżej wymienionego artykułu odkryliśmy, że użycie funkcji wyższego rzędu w Scala może sprawić, że baza kodu jest prosta i łatwa do zrozumienia dla operacji. Funkcje wyższego rzędu to te, które akceptują lub zwracają dane wejściowe z innych funkcji. Zbadaliśmy również przykłady pokazujące różne zastosowania dla tych funkcji wyższego rzędu. Dodatkowo nauczyliśmy się przekazać funkcje anonimowe jako funkcje wysokiego rzędu.