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