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