Курс Raku / Об’єкти, введення-виведення та винятки / Винятки / М’які збої / Вправи / М’яке обернене число

Розв’язання: М’яке обернене число

Ось один із можливих варіантів розв’язання задачі.

Код

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 лишається м’яким і ніколи не кидається як справжній виняток.

Навігація курсом

М’яке обернене число   |   Пошук або «не знайдено»