Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Attribute
Les- und schreibbare Attribute
Standardmäßig ist der Accessor, den has $.name erzeugt,
nur lesbar. Der Wert wird im Konstruktor gesetzt; danach können
Sie ihn lesen, aber von außerhalb des Objekts nicht mehr ändern. Eine
Zuweisung ist ein Fehler:
class Dog {
has $.name;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';Das bricht ab mit:
Cannot modify an immutable Str (Rex)Damit der Wert über den Accessor geändert werden darf, versehen Sie
das Attribut mit dem Trait is rw:
class Dog {
has $.name is rw;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';
say $rex.name; # MaxJetzt liefert der Accessor einen schreibbaren Container, die
Zuweisung funktioniert also, und der name des Objekts wird
zu Max.
Kursnavigation
← Attribute | Standardwerte →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.