Что выведет код Middle Функции, замыкания, генераторы обновлено
Рекурсия, ссылки и значения по умолчанию
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
function fill(array &$acc, int $n): void {
if ($n === 0) return;
$acc[] = $n;
fill($acc, $n - 1);
}
function greet(string $name = 'гость', string $mark = '!'): string {
return "Привет, $name$mark";
}
$list = [];
fill($list, 3);
echo implode(',', $list), "\n";
echo greet(mark: '?'), "\n";
echo greet('Ира'), "\n";
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 3,2,1, Привет, гость?, Привет, Ира! Массив передан по ссылке, поэтому рекурсия накапливает элементы в $list: 3,2,1.
Что выведет
3,2,1
Привет, гость?
Привет, Ира!
Разбор
Массив передан по ссылке, поэтому рекурсия накапливает элементы в $list: 3,2,1. Именованный аргумент mark: пропускает $name, и он берёт значение по умолчанию.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.