Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Атрибуты / Exercises / Изменяемая метка
Решение: Изменяемая метка
Вот один из возможных вариантов решения задачи.
Код
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)'читает текущий текст, приписывает суффикс и записывает результат обратно — и всё это через один и тот же аксессор.
Навигация по курсу
← Изменяемая метка | Методы →