Raku kurss / Regulārās izteiksmes un gramatikas / Gramatikas / Darbību klases / Exercises / Padariet datumu cilvēkam saprotamu
Risinājums: Padariet datumu cilvēkam saprotamu
Šeit ir iespējams risinājums uzdevumam.
Kods
grammar Date {
token TOP { <year> '-' <month> '-' <day> }
token year { \d ** 4 }
token month { \d ** 2 }
token day { \d ** 2 }
}
class Humanise {
method year($/) { make $/.Int }
method month($/) { make <January February March April May June
July August September October November December>[$/ - 1] }
method day($/) { make $/.Int }
method TOP($/) { make "{$<day>.made} {$<month>.made} {$<year>.made}" }
}
say Date.parse('2026-07-05', actions => Humanise.new).made;🦋 Atrodiet programmu failā humanise-a-date.raku.
Izvade
5 July 2026Komentāri
Atšķirībā no vienkāršas aritmētiskas darbības marķieru metodes izveido dažādu veidu vērtības:
yearundayizveido veselus skaitļus, betmonthizveido virkni, izmantojot savu skaitlisko vērtību kā indeksu mēnešu nosaukumu sarakstā.$/ - 1pārvērš divciparu sakritību skaitlī (07→7) un pabīda uz indeksu no nulles, tāpēcmonthar vērtību07izveidoJuly.Metode
TOPneapstrādāto tekstu nemaz vairs neaplūko. Tā tikai nolasa trīs vērtības, ko apakšmetodes jau izveidojušas —$<day>.made,$<month>.made,$<year>.made—, un interpolē tās galīgajā virknē. Nolasot5atpakaļ noday, par brīvu tiek atmesta arī vadošā nulle.Šis ir ikdienišķais darbību klases uzdevums: vienreiz noparsēt strukturētu ievadi un tad ļaut katrai metodei pārvērst savu gabalu par to, kas vajadzīgs pārējai programmai.
Kursa navigācija
← Padariet datumu cilvēkam saprotamu | Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana →