Raku kurss / Padziļināti / Apakšprogrammas / Daudzkārtēja nosūtīšana / Exercises / Klasificēt izmēru
Risinājums: Klasificēt izmēru
Šeit ir viens no iespējamiem uzdevuma atrisinājumiem.
Kods
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);🦋 Šīs programmas pirmkodu var atrast failā classify-sign.raku.
Izvade
small
medium
largeKomentāri
Visiem trim kandidātiem ir viens
Intparametrs, tāpēc bezwhereklauzulām tie konfliktētu. Nosacījumi pirmajos divos padara tos atšķirīgus, un trešais ir universālais variants.whereklauzulas pārbauda$n.abs, tāpēc rezultātu nosaka tikai absolūtā vērtība un zīme tiek ignorēta.size(7)atbilst pirmajam kandidātam (small), savukārtsize(-250)absolūtā vērtība ir250, kas neatbilst nevienam nosacījumam un nonāk pie universālā varianta (large).Kandidāti tiek pārbaudīti no specifiskākā uz vispārīgāko — tieši tādā secībā, kādā tie šeit ir uzrakstīti.