Курс 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.
Навігація курсом
← Атрибути | Значення за замовчуванням →
💪 Або перейдіть одразу до вправ цього розділу.