Raku-Kurs / Anhang 🆕 / Typen und Textmaschinen / Objekte und Klassen / Exercises / Eine Stack-Klasse

Lösung: Eine Stack-Klasse

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

Code

class Stack {
    has @!items;

    method push($x) { @!items.push($x) }
    method pop      { @!items.pop }
    method peek     { @!items.tail }
    method size     { @!items.elems }
}

my $stack = Stack.new;
$stack.push($_) for 1, 2, 3;

say $stack.peek;
say $stack.pop;
say $stack.size;

🦋 Du findest den Quellcode in der Datei stack.raku.

Ausgabe

3
3
2

Kommentare

  1. @!items ist ein privates Attribut — der Twigil ! bedeutet, dass es nur von innerhalb der Klasse erreichbar ist, und genau das sollte der Speicher eines Stapels sein.

  2. peek verwendet .tail, um das letzte Element anzusehen, ohne es zu entfernen, während pop es tatsächlich herunternimmt, die Größe fällt also von 3 auf 2.

Kursnavigation

Eine Stack-Klasse   |   Ein Bankkonto