Курс языка программирования Raku / Продвинутый уровень / Порядок выполнения / Префиксы инструкций / Exercises / Подавление предупреждения
Решение: Подавление предупреждения
Вот возможное решение задачи.
Код
my $name;
my $greeting = quietly { "Hello, " ~ $name ~ "!" };
say $greeting;🦋 Исходный код можно найти в файле silence-warning.raku.
Вывод
Hello, !Комментарии
Интерполяция неопределённой переменной
$nameв строку обычно вызывает предупреждение «use of uninitialized value». Оборачивание выражения вquietlyподавляет его, и выводится только приветствие.Как и
do,quietlyвозвращает значение своего блока, поэтому собранная строка (с пустым местом вместо отсутствующего имени) сохраняется в$greeting.quietlyлишь скрывает предупреждение — значение по-прежнему не определено. Если вместо этого вы хотите обработать отсутствующее значение, задайте значение по умолчанию с помощью оператора defined-or//:$name // 'friend'возвращает'friend', когда$nameне определено, и тогда"Hello, " ~ ($name // 'friend') ~ "!"выведетHello, friend!без каких-либо предупреждений.