Чем стрелочные функции (fn =>) отличаются от анонимных?

Ответ
// Стрелочная (PHP 7.4+) - одно выражение, авто-захват
$double = fn(int $x): int => $x * 2;

$factor = 3;
$multiply = fn($x) => $x * $factor; // $factor захвачен автоматически

// Эквивалент анонимной функции
$multiply = function($x) use ($factor) {
    return $x * $factor;
};

Различия:

  • fn - только одно выражение (нет блока {})
  • Автоматический захват переменных по значению (без use)
  • Нельзя захватить по ссылке
  • Нельзя изменить захваченную переменную
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.