Карточка Junior Функции, замыкания, генераторы спрашивают часто обновлено
Анонимные функции и стрелочные функции
Вопрос
Чем function () use ($x) {...} отличается от fn() => ...?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
function () use ($x): явный список захватываемых переменных, по значению или use (&$x) по ссылке, тело из любых операторов. fn() = выражение (7.4): одно выражение, захват всех используемых переменных по значению автоматически, изменить внешнюю переменную нельзя.
Ответ
function () use ($x): явный список захватываемых переменных, по значению или use (&$x) по ссылке, тело из любых операторов.
fn() => выражение (7.4): одно выражение, захват всех используемых переменных по значению автоматически, изменить внешнюю переменную нельзя.
Обе создают объект Closure. static function и static fn не захватывают $this.
Разбор
Внутри метода класса оба вида автоматически привязывают $this, если они не static.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.