Corso di Raku / Avanzato / Operatori / Trait e pragma / Exercises / Un trait personalizzato
Soluzione: Un trait personalizzato
Ecco una possibile soluzione.
Codice
my %role;
multi sub trait_mod:<is>(Routine:D $r, :$role!) {
%role{$r.name} = $role;
}
sub login() is role('admin') { }
say %role<login>;🦋 Puoi trovare il codice sorgente nel file custom-trait.raku.
Output
adminCommenti
Il trait è una
multi sub trait_mod:<is>il cui parametro nominato:$role!lo attiva peris role(...). A differenza di un trait di sola presenza, questo riceve l’argomento:is role('admin')lega'admin'a$role.Il corpo memorizza quel valore sotto il nome della subroutine. Leggendo
%role<login>successivamente si ottieneadmin. (I trait vengono eseguiti al momento della compilazione, quindi la voce è già presente quando il programma viene eseguito.)