Raku kurss / Padziļināti / Vairāk par iebūvētajiem tipiem / Uzskaitījumi 🆕 / Exercises / Luksofora gaismas
Risinājums: Luksofora gaismas
Šeit ir iespējams risinājums uzdevumam.
Kods
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}";🦋 Atrodiet programmu failā traffic-enum.raku.
Izvade
red is 0
amber is 1
green is 2Komentāri
my Light $currentir parasts, maināms mainīgais — tikai ierobežots ar tipuLight. Piešķirot nākamo konstanti, gaisma pārslēdzas, un skaitlis katru reizi seko nosaukumam:0,1,2.$current++izskatās tā, it kā tam vajadzētu pašam pāriet uz nākamo gaismu, taču tas neizdodas ar tipa pārbaudes kļūdu.++uztver konstanti kā tās kailo skaitli un atdodInt(redkļūst par1), unInttipamLightvairs neder. Tāpēc gaismu pārslēdzat, piešķirot nākamo konstanti, kā parādīts augstāk.Tipa ierobežojums attiecas uz katru piešķīrumu, ne tikai uz pirmo.
$currentpieņemsred,ambervaigreen, taču kaut kā tāda piešķiršana, kas navLight— kaila skaitļa vai virknes —, būtu tipa pārbaudes kļūda.