Funkcje anonimowe
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 44 z 65.
Do tej pory tworzyłeś funkcje o nazwach takich jak calculateTotal czy printMessage. Czasami jednak potrzebujesz prostej funkcji do wykonania jednego konkretnego zadania, a nadawanie jej nazwy wydaje się niepotrzebne. W takich sytuacjach przydają się funkcje anonimowe.
Funkcja anonimowa to funkcja bez nazwy. Definiujesz ją dokładnie tam, gdzie jej potrzebujesz, dzięki czemu Twój kod jest bardziej zwięzły przy krótkich, jednorazowych operacjach. Składnia jest prosta — po prostu zapisujesz listę parametrów, a następnie treść funkcji:
(parameter) {
// ciało funkcji
}Funkcje anonimowe są szczególnie przydatne w połączeniu z metodami list. Na przykład zamiast tworzyć osobną funkcję o nazwie służącą do wyświetlania każdego elementu listy, możesz użyć funkcji anonimowej bezpośrednio z metodą forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});To podejście sprawia, że kod jest przejrzysty i skupiony na zadaniu, zwłaszcza gdy logika funkcji jest prosta i nie będzie ponownie używana w innym miejscu programu.
Wyzwanie
ŁatwyUtwórz program, który przetwarza listę imion i nazwisk pracowników za pomocą funkcji anonimowych. Twój program pokaże, jak używać funkcji anonimowych z metodą forEach do wykonywania różnych operacji na każdym elemencie listy.
- Odczytaj ciąg wejściowy zawierający imiona i nazwiska pracowników oddzielone przecinkami (np.
"Alice,Bob,Charlie,Diana") - Podziel ciąg wejściowy na listę poszczególnych imion i nazwisk za pomocą metody
split() - Użyj metody
forEachz funkcją anonimową, aby wypisać imię i nazwisko każdego pracownika wraz z powitaniem - Użyj metody
forEachz inną funkcją anonimową, aby wypisać imię i nazwisko każdego pracownika wielkimi literami - Użyj metody
forEachz trzecią funkcją anonimową, aby wypisać imię i nazwisko każdego pracownika wraz z liczbą znaków
Na przykład, jeśli dane wejściowe to "Alice,Bob,Charlie", program powinien wyświetlić:
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersJeśli dane wejściowe to "John,Sarah", program powinien wyświetlić:
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersTwój program musi używać trzech oddzielnych wywołań metody forEach, każde z własną funkcją anonimową. Funkcje anonimowe powinny być zdefiniowane bezpośrednio w miejscu użycia, bez nadawania im nazw. Każda funkcja anonimowa powinna przyjmować jeden parametr reprezentujący bieżące imię i nazwisko pracownika oraz wykonywać określoną operację. Użyj interpolacji ciągów, aby sformatować komunikaty wyjściowe dokładnie tak, jak pokazano powyżej.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Odczytaj ciąg wejściowy zawierający imiona pracowników
String? input = stdin.readLineSync();
// Podziel dane wejściowe na listę imion
List<String> employeeNames = input!.split(',');
// Wyświetl początkowy komunikat o przetwarzaniu
print('Processing employee list: $input');
print('===========================================');
// TODO: Napisz swój kod poniżej
// Użyj forEach z funkcjami anonimowymi, aby:
// 1. Wyświetlić powitania
// 2. Wyświetlić imiona wielkimi literami
// 3. Wyświetlić długości imion
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online