Курс по 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)

Коментари

  1. Трейтът is rw кара аксесора да върне записваем контейнер, така че той може да стои отляво на присвояване.

  2. Понеже е записваем, съставният оператор ~= също работи с него: $l.text ~= ' (revised)' прочита текущия текст, долепя наставката и записва резултата обратно — всичко това през същия аксесор.

Навигация в курса

Променлив надпис   |   Методи