Sobes.tech
Junior

Каква е разликата между анонимните функции и обикновените?

sobes.tech AI

Отговор от AI

Анонимните функции са функции без име. Те често се използват за еднократни извиквания или като обратни повиквания.

Основни разлики:

  • Име: Обикновените функции имат име и могат да бъдат извикани по него. Анонимните функции нямат име.
  • Дефиниция: Обикновените функции се дефинират с ключовата дума func (или еквивалент в други езици) и име, последвани от параметри и тяло. Анонимните функции се дефинират "на място", често там, където се използват.
  • Прехвърляне: Анонимните функции често се предават като аргументи към други функции (например, в методите map, where, forEach). Обикновените функции също могат да бъдат предавани, но по-често се използват за дефиниране на логика, която се извиква по име.
  • Обхват: Анонимните функции имат достъп до променливите от обхвата, в който са дефинирани (ефект на "заснемане" на затваряне). Обикновените функции обикновено имат свой собствен обхват.

Пример в Dart/Flutter:

Обикновена функция:

void greet(String name) {
  print('Здравей, $name!');
}

// Извикване на обикновена функция
greet('Свет');

Анонимна функция (лямбда):

// Използване на анонимна функция при итерация на списък
List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
  print(number * 2); // Анонимна функция, която умножава
});

// Анонимна функция, присвоена на променлива
var multiplyByTwo = (int number) => number * 2;
print(multiplyByTwo(5));