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

admin

Komentoj

  1. La trajto estas multi sub trait_mod:<is>, kies nomita parametro :$role! ekigas ĝin por is role(...). Malsame ol nur-ĉeesta trajto, ĉi tiu ricevas la argumenton: is role('admin') ligas 'admin' al $role.

  2. La korpo konservas tiun valoron sub la nomo de la subrutino. Legi %role<login> poste donas admin. (Trajtoj ruliĝas dum kompilado, do la ero jam estas tie, kiam la programo ruliĝas.)

Kursa navigado

Propra trajto   |   Malstreĉi strict