Raku-Kurs / Fortgeschritten / Kontrollfluss / Anweisungspräfixe
sink und quietly
Zwei weitere Präfixe befassen sich damit, Code wegen seiner Effekte statt wegen seines Werts auszuführen.
Das sink-Präfix wertet etwas im Sink-Kontext
aus — rein für seine Seiteneffekte, wobei das Ergebnis verworfen wird.
Es ist nützlich bei einer lazy Operation, deren Ausführung du erzwingen
möchtest:
sink (1..3).map({ print "$_ " });
print "\n"; # 1 2 3Das map wird hier nur wegen der Ausgabe ausgeführt, die
es erzeugt; sink stellt sicher, dass es tatsächlich
ausgeführt wird, und verwirft die resultierende Liste. Ohne die
Erzwingung könnte ein lazy map, dessen Ergebnis nie
verwendet wird, möglicherweise gar nicht ausgeführt werden.
Das quietly-Präfix führt einen Block aus und
unterdrückt dabei Warnungen. Code, der normalerweise
eine Warnung an den Fehlerstrom ausgeben würde, bleibt still:
my $value;
quietly {
say $value + 1; # 1, ohne "uninitialized value"-Warnung
}Das Addieren von 1 zu einem undefinierten
$value würde normalerweise vor der Verwendung eines
uninitialisierten Werts warnen, aber innerhalb von quietly
wird diese Warnung unterdrückt. Verwende es, wenn du bewusst etwas tust,
das Warnungen auslöst, und den Lärm nicht möchtest — aber sparsam, denn
Warnungen weisen normalerweise auf einen echten Fehler hin.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Laziness und Eagerness | Quiz — Anweisungspräfixe →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.