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
undefined

Comentarios

  1. reciprocal(4) devuelve 1 / 4, es decir 0.25, con normalidad.

  2. reciprocal(0) llama a fail, así que devuelve un Failure, que no está definido. El operador // devuelve su operando derecho siempre que el izquierdo no esté definido, así que obtenemos el repliegue undefined.

  3. Usar // cuenta como manejar el fallo: comprueba la definición sin usar el valor, de modo que el Failure se mantiene blando y nunca se lanza como excepción real.

Recíproco suave   |   Búsqueda o no encontrado