Назад к вопросам
Junior
155
questionbank

Что такое лямбда-функции и анонимные функции? Расскажите о них.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Лямбда-функции и анонимные функции в PHP — это, по сути, одно и то же: функции без имени.

Они могут быть присвоены переменной и переданы в качестве аргумента другим функциям.

Основные отличия от обычных функций:

  • Отсутствие имени: Определяются с ключевым словом function.
  • Могут быть присвоены переменной: Переменная становится вызываемой.
  • Могут быть переданы как callback: Используются в функциях высшего порядка (array_map, array_filter и т.д.).
  • Могут "захватывать" переменные из родительской области видимости: С помощью ключевого слова use.

Пример присвоения переменной:

<?php
$greet = function($name) {
    printf("Привет, %s!\n", $name);
};

$greet('Мир');

Пример использования как callback:

<?php
$numbers = [1, 2, 3, 4, 5];

$squaredNumbers = array_map(function($n) {
    return $n * $n;
}, $numbers);

print_r($squaredNumbers);

Пример "захвата" переменных:

<?php
$message = 'Привет';

$greet = function($name) use ($message) {
    printf("%s, %s!\n", $message, $name);
};

$greet('Мир');

Ключевое слово use позволяет анонимной функции получить доступ к переменным, определенным в области видимости, где она была создана. Переменные, переданные в use, копируются по значению, если не указать ссылку (&).

Они широко используются для создания коротких, одноразовых функций, часто внутри других функций или методов для выполнения специфических задач.