Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Attribute / Exercises / Eine änderbare Beschriftung

Lösung: Eine änderbare Beschriftung

Hier ist eine mögliche Lösung der Aufgabe.

Code

class Label {
    has $.text is rw;
}

my $l = Label.new(text => 'draft');
$l.text ~= ' (revised)';
say $l.text;

🦋 Du findest den Quellcode in der Datei changeable-label.raku.

Ausgabe

draft (revised)

Kommentare

  1. Der Trait is rw lässt den Accessor einen schreibbaren Container liefern, sodass er links von einer Zuweisung stehen kann.

  2. Weil er schreibbar ist, funktioniert auch der zusammengesetzte Operator ~= darauf: $l.text ~= ' (revised)' liest den aktuellen Text, hängt das Suffix an und speichert das Ergebnis wieder zurück — alles über denselben Accessor.

Kursnavigation

Eine änderbare Beschriftung   |   Methoden