Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Attributi
Attributi in lettura e scrittura
Per impostazione predefinita, l’accessore creato da
has $.name è di sola lettura. Il valore viene
inizializzato nel costruttore, dopodiché puoi leggerlo ma non cambiarlo
dall’esterno dell’oggetto. Assegnarvi qualcosa è un errore:
class Dog {
has $.name;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';Il programma si ferma con:
Cannot modify an immutable Str (Rex)Per permettere che il valore venga cambiato attraverso l’accessore,
contrassegna l’attributo con il tratto is rw:
class Dog {
has $.name is rw;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';
say $rex.name; # MaxOra l’accessore restituisce un contenitore scrivibile, quindi
l’assegnamento funziona e il name dell’oggetto diventa
Max.
Navigazione del corso
← Attributi | Valori predefiniti →
💪 Oppure vai direttamente agli esercizi di questa
sezione.