Corso di Raku / Avanzato / Operatori / Trait e pragma
Trait integrati
Un trait viene applicato con la parola chiave
is subito dopo una dichiarazione. Viene eseguito al momento
della compilazione e modifica una proprietà fissa dell’elemento a cui è
associato. Raku ne fornisce molti; ne hai già usati alcuni.
Per impostazione predefinita, i parametri di una subroutine sono
in sola lettura — non è possibile assegnare loro un
valore all’interno della routine. Il trait is copy fornisce
una copia privata e modificabile dell’argomento, che puoi cambiare senza
influire sul chiamante:
sub greet($name is copy) {
$name = "dear $name";
say "Hello, $name!";
}
my $who = 'Anna';
greet($who); # Hello, dear Anna!
say $who; # Anna — the caller's own variable is untouchedIl trait is rw va oltre: lega il parametro alla
variabile del chiamante, quindi una modifica effettuata all’interno
della routine è visibile all’esterno:
sub bump($n is rw) {
$n++;
}
my $x = 10;
bump($x);
say $x; # 11Senza uno di questi trait, $n++ causerebbe un errore di
compilazione, perché il parametro sarebbe in sola lettura.
Un altro trait comune imposta un valore predefinito:
my $port is default(8080);
say $port; # 8080Qui is default assegna alla variabile un valore di
fallback. Ogni trait integrato — is rw,
is copy, is default e altri — associa uno
specifico comportamento a tempo di compilazione a una dichiarazione. Il
prossimo argomento mostra che i trait non sono un insieme chiuso: puoi definire i
tuoi.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Trait e pragma | Quiz — Trait →
💪 Oppure vai direttamente agli esercizi di questa
sezione.