Sobes.tech
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));