Курс по 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Коментари
reciprocal(4)връща1 / 4, тоест0.25, нормално.reciprocal(0)извикваfail, така че връщаFailure, който е недефиниран. Операторът//връща дясната си страна винаги когато лявата е недефинирана, така че получаваме резервнотоundefined.Използването на
//се брои за обработка на провала: то проверява за дефинираност, без да използва стойността, така чеFailureостава мек и никога не се хвърля като истинско изключение.