Junior
Jaký je rozdíl mezi anonymními funkcemi a běžnými?
sobes.tech AI
Odpověď od AI
Anonymní funkce jsou funkce bez jména. Často se používají pro jednorázové volání nebo jako zpětné volání (callback).
Hlavní rozdíly:
- Jméno: Obvyklé funkce mají jméno a lze je volat podle něj. Anonymní funkce nemají jméno.
- Definice: Obvyklé funkce jsou definovány pomocí klíčového slova
func(nebo ekvivalentu v jiných jazycích) a jména, následuje parametry a tělo. Anonymní funkce jsou definovány "za běhu", často na místě jejich použití. - Předání: Anonymní funkce se často předávají jako argumenty jiným funkcím (například v metodách
map,where,forEach). Obvyklé funkce lze také předat, ale častěji se používají k definování logiky, která je volána podle jména. - Rozsah: Anonymní funkce mají přístup k proměnným z rozsahu, ve kterém byly definovány (efekt "zachycení" uzávěru). Obvyklé funkce mají obvykle svůj vlastní rozsah.
Příklad v Dart/Flutter:
Obvyklá funkce:
void greet(String name) {
print('Ahoj, $name!');
}
// Volání obvyklé funkce
greet('Svět');
Anonymní funkce (lambda):
// Použití anonymní funkce při iteraci seznamu
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
print(number * 2); // Anonymní funkce provádějící násobení
});
// Anonymní funkce přiřazená proměnné
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));