Cursus Raku / Geavanceerd / Besturingsstructuren / Statement-prefixen / Exercises / Een waarschuwing onderdrukken

Oplossing: Een waarschuwing onderdrukken

Hier is een mogelijke oplossing voor de opgave.

Code

my $name;

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

🦋 Je kunt de broncode vinden in het bestand silence-warning.raku.

Uitvoer

Hello, !

Opmerkingen

  1. Het interpoleren van de ongedefinieerde $name in de string activeert normaal een waarschuwing “use of uninitialized value”. Door de expressie in quietly te wikkelen, wordt deze onderdrukt, zodat alleen de begroeting wordt afgedrukt.

  2. Net als do geeft quietly de waarde van zijn blok terug, dus de samengestelde string (met de ontbrekende naam die een lege plek achterlaat) wordt opgeslagen in $greeting.

  3. quietly verbergt alleen de waarschuwing — de waarde is nog steeds ongedefinieerd. Als je in plaats daarvan de ontbrekende waarde wilt afhandelen, geef dan een standaardwaarde op met de defined-or-operator //: $name // 'friend' levert 'friend' op wanneer $name ongedefinieerd is, zodat "Hello, " ~ ($name // 'friend') ~ "!" Hello, friend! print zonder enige waarschuwing.

Cursusnavigatie

Een waarschuwing onderdrukken   |   Subroutines