Курс по Raku / Напреднали / Управление на потока / Префикси на инструкции 🆕 / Exercises / Заглушете предупреждение

Решение: Заглушете предупреждение

Ето едно възможно решение на задачата.

Код

my $name;

my $greeting = quietly { "Hello, " ~ $name ~ "!" };
say $greeting;

🦋 Изходният код на тази програма можете да намерите във файла silence-warning.raku.

Изход

Hello, !

Коментари

  1. Интерполирането на неопределената $name в низа нормално предизвиква предупреждение „use of uninitialized value”. Обвиването на израза в quietly го потиска, така че се отпечатва само поздравът.

  2. Подобно на do, quietly връща стойността на своя блок, така че съставеният низ (с липсващото име, оставящо празно място) се записва в $greeting.

  3. quietly само скрива предупреждението — стойността все още е неопределена. Ако вместо това искате да се справите с липсващата стойност, задайте стойност по подразбиране с оператора за определеност //: $name // 'friend' дава 'friend', когато $name е неопределена, така че "Hello, " ~ ($name // 'friend') ~ "!" отпечатва Hello, friend! без никакво предупреждение.

Навигация в курса

Заглушете предупреждение   |   Подпрограми