Курс языка программирования 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остаётся мягким и никогда не превращается в настоящее исключение.