Raku-Kurs / Fortgeschritten / Mehr über eingebaute Typen / Aufzählungen / Exercises / Ampeln
Lösung: Ampeln
Hier ist eine mögliche Lösung der Aufgabe.
Code
enum Light <red amber green>;
my Light $current = red;
say "$current is {$current.value}";
$current = amber;
say "$current is {$current.value}";
$current = green;
say "$current is {$current.value}";🦋 Du findest den Quellcode in der Datei traffic-enum.raku.
Ausgabe
red is 0
amber is 1
green is 2Kommentare
my Light $currentist eine gewöhnliche, veränderbare Variable — nur auf den TypLighteingeschränkt. Durch das Zuweisen der nächsten Konstante wird die Ampel weitergeschaltet, und die Zahl folgt jedes Mal dem Namen:0,1,2.$current++sieht so aus, als sollte es von selbst zur nächsten Farbe wechseln, aber es schlägt mit einem Typprüfungsfehler fehl.++behandelt die Konstante als einfache Zahl und gibt einenIntzurück (redwird zu1), und einIntpasst nicht mehr zum TypLight. Deshalb wechselst du die Ampel, indem du die nächste Konstante zuweist, wie oben gezeigt.Die Typbeschränkung gilt für jede Zuweisung, nicht nur für die erste.
$currentakzeptiertred,amberodergreen, aber die Zuweisung von etwas, das keinLightist — eine bloße Zahl oder ein String — wäre ein Typprüfungsfehler.
Kursnavigation
← Ampeln | Wochentagsnummern →