Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти / Атрибути
Атрибути за четене и писане
По подразбиране аксесорът, създаден от has $.name, е
само за четене. Стойността се задава в конструктора, след което
можете да я четете, но не и да я променяте отвън. Присвояването ѝ е
грешка:
class Dog {
has $.name;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';Това спира с:
Cannot modify an immutable Str (Rex)За да позволите стойността да се променя през аксесора, отбележете
атрибута с трейта is rw:
class Dog {
has $.name is rw;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';
say $rex.name; # MaxСега аксесорът връща записваем контейнер, така че присвояването
работи и name на обекта става Max.
Навигация в курса
← Атрибути | Стойности по подразбиране →
💪 Или преминете направо към упражненията в този
раздел.