💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения откроются общий результат, оценки по 4 тематическим шкалам и подробный разбор.
Вопрос 2 из 20
Не запуская фрагмент «Возврат списка», выберите точное описание его работы.
Perl Возврат списка Копировать
sub pair { return (10, 20) }
my $x = pair();
my @x = pair();
say "$x/@x";
Скалярное присваивание получает первый элемент списка, 20, а массив — оба значения.
Скалярное присваивание получает последний элемент списка, 21, а массив — оба значения.
Скалярное присваивание получает последний элемент списка, 20, а хеш — оба значения.
Скалярное присваивание получает последний элемент списка, 20, а массив — оба значения.
Скалярное присваивание получает последний элемент списка, 20, а массив — оба ключи.
Вопрос 9 из 20
Почему пограничный случай больше не теряется в участке с `@rev`, `@x` и `$text`?
Perl Контекст выражения Копировать
my @rev = reverse @x;
my $text = join '', @rev;
Правка лишь воспроизводит исходное поведение: В $n окажется 3, а @copy получит три элемента: контекст задаётся левой частью присваивания.
Если нужен обратный порядок элементов, reverse следует вызвать в списочном контексте, а строку собрать отдельно.
Если нужен обратный порядок элементов, reverse не следует вызвать в списочном контексте, а строку собрать отдельно.
После изменения сохраняется прежний дефект: В скалярном контексте reverse сначала склеивает список и разворачивает строку, поэтому результат отличается от списочного reverse.
Если нужен обратный порядок элементов, reverse следует вызвать в скалярном контексте, а строку собрать отдельно.
Вопрос 11 из 20
Почему новая версия с `@v` устраняет исходный дефект?
Perl Оператор wantarray Копировать
sub values { my @v = (1,2,3); return wantarray ? @v : scalar @v }
Если скалярный контракт — количество, его нужно вернуть неявно, а не надеяться на побочный контекст списка.
Правка лишь воспроизводит исходное поведение: Первый вызов видит скалярный контекст say, второй — списочный, третий — void.
Если скалярный контракт — количество, его нужно вернуть явно, а не надеяться на побочный контекст списка.
После изменения сохраняется прежний дефект: В скалярном контексте возвращается ссылка на массив, а числовая операция над ней не означает количество элементов.
Если скалярный контракт — количество, его не нужно вернуть явно, а не надеяться на побочный контекст списка.
Вопрос 20 из 20
Какое утверждение о теме «Неочевидные преобразования» не приписывает механизму лишних гарантий?
Булев контекст является разновидностью скалярного, но функция может вернуть ложное значение, не равное числу найденных элементов.
Булев контекст является разновидностью скалярного, но функция может вернуть истинное значение, не равное числу найденных элементов.
Булев контекст не является разновидностью скалярного, но функция может вернуть истинное значение, не равное числу найденных элементов.
Булев контекст является разновидностью скалярного, но функция может вернуть истинное ключ, не равное числу найденных элементов.
Булев контекст является разновидностью скалярного, но функция не может вернуть истинное значение, не равное числу найденных элементов.