Curso de Raku / Objetos, entrada/salida y excepciones / Excepciones / Fallos suaves / Exercises / Recíproco suave
Solución: Recíproco suave
Aquí tienes una posible solución para la tarea.
Código
sub reciprocal($n) {
fail 'no reciprocal of zero' if $n == 0;
return 1 / $n;
}
say reciprocal(4);
say reciprocal(0) // 'undefined';🦋 Puedes encontrar el código fuente en el archivo soft-divide.raku.
Salida
0.25
undefinedComentarios
reciprocal(4)devuelve1 / 4, es decir0.25, con normalidad.reciprocal(0)llama afail, así que devuelve unFailure, que no está definido. El operador//devuelve su operando derecho siempre que el izquierdo no esté definido, así que obtenemos el repliegueundefined.Usar
//cuenta como manejar el fallo: comprueba la definición sin usar el valor, de modo que elFailurese mantiene blando y nunca se lanza como excepción real.