Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Atributoj

Leg- kaj skribeblaj atributoj

Defaŭlte, la atingilo kreita de has $.name estas nur-legebla. La valoro estas pravalorizita en la konstruilo, post kio vi povas legi la valoron sed ne ŝanĝi ĝin de ekstere de la objekto. Atribui al ĝi estas eraro:

class Dog {
    has $.name;
}

my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';

Ĉi tio haltas kun:

Cannot modify an immutable Str (Rex)

Por permesi, ke la valoro estu ŝanĝata tra la atingilo, marku la atributon per la trajto is rw:

class Dog {
    has $.name is rw;
}

my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';
say $rex.name; # Max

Nun la atingilo redonas skribeblan ujon, do la atribuo funkcias kaj la name de la objekto fariĝas Max.

Kursa navigado

Atributoj   |   Defaŭltaj valoroj


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.