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));