Kurso de Raku / Progresinta / Operatoroj / Trajtoj kaj pragmoj / Exercises / Propra trajto
Solvo: Propra trajto
Jen ebla solvo de la tasko.
Kodo
my %role;
multi sub trait_mod:<is>(Routine:D $r, :$role!) {
%role{$r.name} = $role;
}
sub login() is role('admin') { }
say %role<login>;🦋 Vi povas trovi la fontkodon en la dosiero custom-trait.raku.
Eligo
adminKomentoj
La trajto estas
multi sub trait_mod:<is>, kies nomita parametro:$role!ekigas ĝin poris role(...). Malsame ol nur-ĉeesta trajto, ĉi tiu ricevas la argumenton:is role('admin')ligas'admin'al$role.La korpo konservas tiun valoron sub la nomo de la subrutino. Legi
%role<login>poste donasadmin. (Trajtoj ruliĝas dum kompilado, do la ero jam estas tie, kiam la programo ruliĝas.)