Курс по Raku / Обекти, вход-изход и изключения / Изключения / Меки откази / Exercises / Меко обратно число

Решение: Меко обратно число

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

Код

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

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

🦋 Намерете програмата във файла soft-divide.raku.

Изход

0.25
undefined

Коментари

  1. reciprocal(4) връща 1 / 4, тоест 0.25, нормално.

  2. reciprocal(0) извиква fail, така че връща Failure, който е недефиниран. Операторът // връща дясната си страна винаги когато лявата е недефинирана, така че получаваме резервното undefined.

  3. Използването на // се брои за обработка на провала: то проверява за дефинираност, без да използва стойността, така че Failure остава мек и никога не се хвърля като истинско изключение.

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

Меко обратно число   |   Търсене или ненамерено