Corso di Raku / Oggetti, input/output ed eccezioni / Eccezioni / Guasti morbidi / Exercises / Reciproco morbido
Soluzione: Reciproco morbido
Ecco una possibile soluzione del compito.
Codice
sub reciprocal($n) {
fail 'no reciprocal of zero' if $n == 0;
return 1 / $n;
}
say reciprocal(4);
say reciprocal(0) // 'undefined';🦋 Trova il programma nel file soft-divide.raku.
Output
0.25
undefinedCommenti
reciprocal(4)restituisce normalmente1 / 4, cioè0.25.reciprocal(0)chiamafail, quindi restituisce unFailure, che non è definito. L’operatore//restituisce il suo operando destro ogni volta che quello sinistro non è definito, quindi otteniamo il ripiegoundefined.Usare
//conta come gestire il fallimento: mette alla prova la definitezza senza usare il valore, quindi ilFailureresta morbido e non viene mai sollevato come eccezione vera.