Kurso de Raku / Progresinta / Subprogramoj / Multobla dissendo / Exercises / Klasifiki la grandecon
Solvo: Klasifiki la grandecon
Jen ebla solvo de la tasko.
Kodo
multi sub size(Int $n where $n.abs < 10) { 'small' }
multi sub size(Int $n where $n.abs < 100) { 'medium' }
multi sub size(Int $n) { 'large' }
say size(7);
say size(30);
say size(-250);🦋 Vi povas trovi la fontkodon en la dosiero classify-sign.raku.
Eligo
small
medium
largeKomentoj
Ĉiuj tri kandidatoj prenas unuopan
Int, do sen lawhere-frazoj ili kolizius. La kondiĉoj ĉe la unuaj du igas ilin distinktaj, kaj la tria estas la ĝenerala kazo.La
where-frazoj testas$n.abs, do nur la amplekso decidas la rezulton kaj la signo estas ignorata.size(7)kongruas kun la unua kandidato (small), dumsize(-250)havas absolutan valoron de250, kiu malsukcesas ĉe ambaŭ kondiĉoj kaj transiras al la ĝenerala kazo (large).La kandidatoj estas testataj de la plej specifa al la plej ĝenerala — ĝuste en la ordo, en kiu ili estas skribitaj ĉi tie.