Что выведет код Junior Функции, замыкания, генераторы спрашивают часто обновлено

use по значению и по ссылке

Вопрос

Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.

<?php
$a = 1;
$b = 1;
$byValue = function () use ($a) { return $a; };
$byRef = function () use (&$b) { return $b; };
$arrow = fn() => $a + $b;
$a = 10;
$b = 10;
echo $byValue(), ' ', $byRef(), ' ', $arrow(), "\n";

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1 10 2. use ($a) скопировал 1 при создании. use (&$b) держит ссылку и видит 10.

Что выведет

1 10 2

Разбор

use ($a) скопировал 1 при создании. use (&$b) держит ссылку и видит 10. Стрелочная функция тоже захватила значения при создании: 1 + 1 = 2.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.