Raku-Kurs / Fortgeschritten / Subroutinen / Mehrfach-Dispatch / Exercises / Die Größe klassifizieren
Lösung: Die Größe klassifizieren
Hier ist eine mögliche Lösung der Aufgabe.
Code
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);🦋 Den Quellcode finden Sie in der Datei classify-sign.raku.
Ausgabe
small
medium
largeKommentare
Alle drei Kandidaten nehmen ein einzelnes
Intentgegen, sodass sie ohne diewhere-Klauseln kollidieren würden. Die Bedingungen bei den ersten beiden machen sie unterscheidbar, und der dritte ist der Auffangfall.Die
where-Klauseln prüfen$n.abs, sodass allein der Betrag das Ergebnis bestimmt und das Vorzeichen ignoriert wird.size(7)passt zum ersten Kandidaten (small), währendsize(-250)einen Absolutwert von250hat, der beide Bedingungen nicht erfüllt und zum Auffangfall (large) durchfällt.Die Kandidaten werden vom spezifischsten zum allgemeinsten geprüft — genau in der Reihenfolge, in der sie hier geschrieben sind.