Raku-Kurs / Anhang 🆕 / Typen und Textmaschinen / Objekte und Klassen / Exercises / Vektoren addieren
Lösung: Vektoren addieren
Hier ist eine mögliche Lösung der Aufgabe.
Code
class Vector {
has $.x;
has $.y;
method add(Vector $v) {
Vector.new(x => $.x + $v.x, y => $.y + $v.y);
}
method Str { "($.x, $.y)" }
}
my $sum = Vector.new(x => 1, y => 2).add(Vector.new(x => 3, y => 4));
put $sum;🦋 Du findest den Quellcode in der Datei vector-add.raku.
Ausgabe
(4, 6)Kommentare
addverändert keinen der beiden Vektoren; es baut aus den summierten Komponenten einen brandneuenVectorund liefert ihn zurück.Beachten Sie, dass
Vectorinnerhalb seiner eigenen Definition verwendet wird — als ParametertypVector $vund inVector.new. Das ist völlig in Ordnung: Der Typname ist vom Beginn seiner Erklärung an bekannt, eine Klasse darf sich in ihren eigenen Methoden also frei auf sich selbst beziehen. Eine Vorwärtserklärung irgendeiner Art ist nicht nötig.putverwandelt sein Argument mit der MethodeStrin eine Zeichenkette, es erscheint also die eigene Formatierung"($.x, $.y)".