Raku kurss / Padziļināti / Operatori / Īpašības un pragmas 🆕 / Exercises / Pielāgota īpašība
Risinājums: Pielāgota īpašība
Šeit ir iespējamais uzdevuma risinājums.
Kods
my %role;
multi sub trait_mod:<is>(Routine:D $r, :$role!) {
%role{$r.name} = $role;
}
sub login() is role('admin') { }
say %role<login>;🦋 Programmas pirmkodu var atrast failā custom-trait.raku.
Izvade
adminKomentāri
Īpašība ir
multi sub trait_mod:<is>, kura nosauktais parametrs:$role!aktivizē to priekšis role(...). Atšķirībā no klātbūtnes-tipa īpašības, šī saņem argumentu:is role('admin')piesaista'admin'pie$role.Ķermenis saglabā šo vērtību ar apakšprogrammas nosaukumu kā atslēgu. Nolasot
%role<login>pēc tam, iegūstamadmin. (Īpašības tiek izpildītas kompilēšanas laikā, tāpēc ieraksts jau ir tur, kad programma sāk darboties.)