Raku-Kurs / Anhang 🆕 / Typen und Textmaschinen / Objekte und Klassen / Exercises / Welcher Quadrant
Lösung: Welcher Quadrant
Hier ist eine mögliche Lösung der Aufgabe.
Code
class Point {
has $.x;
has $.y;
method quadrant {
return 'origin' if $.x == 0 && $.y == 0;
return 'on an axis' if $.x == 0 || $.y == 0;
return $.x > 0 ?? ($.y > 0 ?? 'first' !! 'fourth')
!! ($.y > 0 ?? 'second' !! 'third');
}
}
for Point.new(x => 3, y => 4), Point.new(x => -2, y => 5),
Point.new(x => -1, y => -6), Point.new(x => 0, y => 3) -> $point {
say "({$point.x}, {$point.y}): {$point.quadrant}";
}🦋 Du findest den Quellcode in der Datei point-quadrant.raku.
Ausgabe
(3, 4): first
(-2, 5): second
(-1, -6): third
(0, 3): on an axisKommentare
Die beiden frühen
returnerledigen zuerst die Sonderfälle — den Ursprung und Punkte, die auf einer Achse liegen —, sodass der Rest der Methode annehmen darf, dass beide Koordinaten von null verschieden sind.Der verschachtelte ternäre Operator liest den Quadranten dann an den Vorzeichen von
xundyab: Ein positivesxbedeutet den ersten oder vierten Quadranten, ein negativesxden zweiten oder dritten.