Sobes.tech
Back to questions
Junior
119
questionbank

В чем различие между анонимными функциями и обычными?

Sobes Copilot

Get answers in real time

Answer from AI

sobes.tech AI

Анонимные функции — это функции без имени. Они часто используются для единоразового вызова или в качестве колбэков.

Основные отличия:

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

Пример в Dart/Flutter:

Обычная функция:

void greet(String name) {
  print('Hello, $name!');
}

// Вызов обычной функции
greet('World');

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

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

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