Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти / Атрибути / Вправи / Змінювана мітка
Розв’язання: Змінювана мітка
Ось один із можливих варіантів розв’язання задачі.
Код
class Label {
has $.text is rw;
}
my $l = Label.new(text => 'draft');
$l.text ~= ' (revised)';
say $l.text;🦋 Вихідний код можна знайти у файлі changeable-label.raku.
Вивід
draft (revised)Коментарі
Трейт
is rwзмушує аксесор повертати записуваний контейнер, тож той може стояти ліворуч від присвоєння.Оскільки він записуваний, складений оператор
~=теж на ньому працює:$l.text ~= ' (revised)'читає поточний текст, приєднує суфікс і зберігає результат назад — і все це через той самий аксесор.
Навігація курсом
← Змінювана мітка | Методи →