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
Het interpoleren van de ongedefinieerde
$namein de string activeert normaal een waarschuwing “use of uninitialized value”. Door de expressie inquietlyte wikkelen, wordt deze onderdrukt, zodat alleen de begroeting wordt afgedrukt.Net als
dogeeftquietlyde waarde van zijn blok terug, dus de samengestelde string (met de ontbrekende naam die een lege plek achterlaat) wordt opgeslagen in$greeting.quietlyverbergt 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$nameongedefinieerd is, zodat"Hello, " ~ ($name // 'friend') ~ "!"Hello, friend!print zonder enige waarschuwing.