Junior
Jaka jest różnica między funkcjami anonimowymi a zwykłymi?
sobes.tech AI
Odpowiedź od AI
Funkcje anonimowe to funkcje bez nazwy. Są często używane do jednorazowych wywołań lub jako funkcje zwrotne (callbacki).
Główne różnice:
- Nazwa: Funkcje zwykłe mają nazwę i można je wywołać po niej. Funkcje anonimowe nie mają nazwy.
- Definicja: Funkcje zwykłe są definiowane za pomocą słowa kluczowego
func(lub odpowiednika w innych językach) i nazwy, po której następują parametry i ciało. Funkcje anonimowe są definiowane "na bieżąco", często w miejscu ich użycia. - Przekazywanie: Funkcje anonimowe często są przekazywane jako argumenty do innych funkcji (np. w metodach
map,where,forEach). Funkcje zwykłe również mogą być przekazywane, ale częściej służą do definiowania logiki wywoływanej po nazwie. - Zakres: Funkcje anonimowe mają dostęp do zmiennych z zakresu, w którym zostały zdefiniowane (efekt "złapania" zamknięcia). Funkcje zwykłe zazwyczaj mają własny zakres.
Przykład w Dart/Flutter:
Funkcja zwykła:
void greet(String name) {
print('Cześć, $name!');
}
// Wywołanie funkcji zwykłej
greet('Świecie');
Funkcja anonimowa (lambda):
// Użycie funkcji anonimowej podczas iteracji listy
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
print(number * 2); // Funkcja anonimowa wykonująca mnożenie
});
// Funkcja anonimowa przypisana do zmiennej
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));