Sobes.tech
Junior

Aký je rozdiel medzi anonymnými funkciami a bežnými?

sobes.tech AI

Odpoveď od AI

Anonymné funkcie sú funkcie bez mena. Často sa používajú na jednorazové volania alebo ako spätné volania (callbacky).

Hlavné rozdiely:

  • Meno: Bežné funkcie majú meno a môžu byť volané podľa neho. Anonymné funkcie nemajú meno.
  • Definícia: Bežné funkcie sú definované pomocou kľúčového slova func (alebo ekvivalent v iných jazykoch) a mena, nasledovaného parametrami a telom. Anonymné funkcie sú definované "na mieste", často na mieste ich použitia.
  • Prenos: Anonymné funkcie sa často prenášajú ako argumenty do iných funkcií (napríklad v metódach map, where, forEach). Bežné funkcie môžu tiež byť prenesené, ale častejšie sa používajú na definovanie logiky, ktorá sa volá podľa mena.
  • Rozsah: Anonymné funkcie majú prístup k premenným z rozsahu, v ktorom boli definované (efekt "zachytenia" uzávierky). Bežné funkcie majú zvyčajne svoj vlastný rozsah.

Príklad v Dart/Flutter:

Bežná funkcia:

void greet(String name) {
  print('Ahoj, $name!');
}

// Volanie bežnej funkcie
greet('Svet');

Anonymná funkcia (lambda):

// Použitie anonymnej funkcie pri iterácii zoznamu
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
  print(number * 2); // Anonymná funkcia, ktorá vykonáva násobenie
});

// Anonymná funkcia priradená k premennej
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));