Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Esceptoj / Molaj misfunkcioj / Exercises / Mola reciproko

Solvo: Mola reciproko

Jen ebla solvo de la tasko.

Kodo

sub reciprocal($n) {
    fail 'no reciprocal of zero' if $n == 0;
    return 1 / $n;
}

say reciprocal(4);
say reciprocal(0) // 'undefined';

🦋 Vi povas trovi la fontkodon en la dosiero soft-divide.raku.

Eligo

0.25
undefined

Komentoj

  1. reciprocal(4) redonas 1 / 4, tio estas 0.25, normale.

  2. reciprocal(0) vokas fail, do ĝi redonas Failure, kiu estas nedifinita. La operatoro // redonas sian dekstran flankon, kiam ajn la maldekstra flanko estas nedifinita, do ni ricevas la retiriĝon undefined.

  3. Uzi // kalkuliĝas kiel trakti la misfunkcion: ĝi testas difinitecon sen uzi la valoron, do la Failure restas mola kaj neniam estas ĵetata kiel vera escepto.

Kursa navigado

Mola reciproko   |   Trovita aŭ ne trovita