Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Ausnahmen / Weiche Fehler / Exercises / Weicher Kehrwert

Lösung: Weicher Kehrwert

Hier ist eine mögliche Lösung der Aufgabe.

Code

sub reciprocal($n) {
    fail 'no reciprocal of zero' if $n == 0;
    return 1 / $n;
}

say reciprocal(4);
say reciprocal(0) // 'undefined';

🦋 Du findest den Quellcode in der Datei soft-divide.raku.

Ausgabe

0.25
undefined

Kommentare

  1. reciprocal(4) liefert ganz normal 1 / 4, also 0.25.

  2. reciprocal(0) ruft fail auf und liefert daher ein Failure, das undefiniert ist. Der Operator // liefert seine rechte Seite, sobald die linke undefiniert ist, wir erhalten also den Ersatzwert undefined.

  3. // zu verwenden gilt als Behandeln des Fehlschlags: Es prüft auf Definiertheit, ohne den Wert zu verwenden, das Failure bleibt also weich und wird nie als echte Ausnahme geworfen.

Kursnavigation

Weicher Kehrwert   |   Nachschlagen oder nicht gefunden