Я понимаю, что представляют собой функции Lambda и Closure, но я не понимаю необходимости в функциях Closure.
Зачем нужны функции Closure, если мы можем просто передать переменную в функции Lambda. Похоже, что проще написать имя переменной при вызове функции, чем написать «use» и затем определить ее.
Например, эти два будут делать то же самое:
$string = 'string';
$lambda = function($string) {
echo $string;
};
$lambda($string);
$string = 'string';
$closure = function() use ($string) {
echo $string;
};
$closure();
... и, насколько я понимаю, первый блок кода - это функция Anonymous (Lambda), а второй - Closure. Кроме того, изменение переменной внутри функции не повлияет на переменную вне ее в обоих направлениях.
Я нашел много вопросов о различиях, но ни один из них не объяснил необходимость этого.
Спасибо для ответов.