Карточка 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 ошибок.